抱歉,如果标题具有误导性,我不确定如何准确描述我正在寻找的内容。
我有一个数组result,我想变成多个对象,每个对象的属性是字段Name Test我需要让我的result.map方法,我用它来合并result与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))Run Code Online (Sandbox Code Playgroud)
此代码返回一个对象数组,这不是我想要的,因为我需要result["YELLOW"]稍后在我的代码中使用。因此,我需要结果采用这种格式,没有数组。
{
"YELLOW":{
"Count":124,
"pop":1
},
"BLACK":{
"Count":124,
"pop":1
},
"BLUE":{
"Count":124,
"pop":1
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这是有道理的,我觉得我非常接近我想要的东西,只是缺少一些小东西,但是我试图使这项工作的每一种方式都变成了语法错误。
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)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5928 次 |
| 最近记录: |