从map()函数返回对象而不是Array

丹尼尔·J

抱歉,如果标题误导了我,我不确定如何准确地描述我要寻找的内容。

我有一个数组result,我想将其转换成多个对象,其中每个对象属性是一个字段Name Test,在result它合并需要保留result.map方法data

  result = [{
      "Name Test": "Yellow",
      Count: 124,

    },
    {
      "Name Test": "Black",
      Count: 124,
    },
    {
      "Name Test": "Blue",
      Count: 124,
    }
  ];

  data = [{
      "Name Test": "Yellow",
      pop: 1
    },
    {
      "Name Test": "Black",
      pop: 1
    },
    {
      "Name Test": "Blue",
      pop: 1
    }
  ];


result = result.map((obj1, index) => {
    const obj2 = data[index];
    return {
        [obj1["Name Test"].toUpperCase()]: {
            Count: obj1.Count,
            pop: obj2.pop,
        }
    };
});
console.log(JSON.stringify(result))

这段代码返回的对象数组不是我想要的,因为我result["YELLOW"]以后可以在代码中使用它。因此,我需要结果为这种格式,没有数组。

{  
   "YELLOW":{  
      "Count":124,
      "pop":1
   },
   "BLACK":{  
      "Count":124,
      "pop":1
   },
   "BLUE":{  
      "Count":124,
      "pop":1
   }
}

我希望这是有道理的,并且我觉得我非常接近我想要的东西,只是缺少了一些小东西,但是我尝试使这项工作所做的每一种方式都变成了语法错误。

马埃里·阿里(Maheer Ali)

map() 将始终返回一个数组。

  • 您应该使用reduce()累加器并将其设置为空对象{}

  • 使用解构和散布语法来隔离Name Test其他属性。

  • 设置累加器的属性,其键为"Name Test"每个对象的属性,其值为对象的其余部分。

const arr = [{ "Name Test": "Yellow", Count: 124, pop: 1 }, { "Name Test": "Black", Count: 124, pop: 1 }, { "Name Test": "Blue", Count: 124, pop: 1 } ];

const res = arr.reduce((ac,{["Name Test"]:x,...rest}) => (ac[x] = rest,ac),{})

console.log(res)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章