gpt4 book ai didi

javascript - 从 map() 函数返回对象而不是数组

转载 作者:行者123 更新时间:2023-11-29 17:36:21 33 4
gpt4 key购买 nike

抱歉,如果标题有误导性,我不确定如何准确描述我要查找的内容。

我有一个数组 result,我想将其转换为多个对象,其中每个对象属性都是字段 Name Test 我需要保留我的 result.map 方法,因为我用它来合并 resultdata

  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
}
}

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

最佳答案

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)

关于javascript - 从 map() 函数返回对象而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56195959/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com