gpt4 book ai didi

javascript - 如果某些键使用 JavaScript 相同,则从另一个数组构建数组

转载 作者:行者123 更新时间:2023-11-30 11:19:30 25 4
gpt4 key购买 nike

我有一组数据。数组中的一些键是相同的。我想根据键创建一个新数组并添加其他数据。

这是我的数组

 var myObjOne = [
{
"name":"John",
"id":1,
"car":"maruti"
},
{
"name":"John",
"id":2,
"car":"wolks"
},
{
"name":"John",
"id":3,
"car":"bmw"
},
{
"name":"Peter",
"id":4,
"car":"alto"
},
{
"name":"Peter",
"id":5,
"car":"swift"
}
];

我想将数组转换为以下格式。

var myObj = [
{
"name":"John",
"items": [
{ "id":1, "car":"maruti" },
{ "id":2, "car":"wolks" },
{ "id":3, "car":"bmw" }
]},
{
"name":"Peter",
"items": [
{ "id":4, "car":"alto" },
{ "id":5, "car":"swift" },
]
}
];

我正在开发节点环境。

最佳答案

您可以使用 Array#reduce 创建对象首先将名称与项目映射,然后通过使用 for...of 遍历中间映射来创建最终数组循环:

var source = [{"name":"John","id":1,"car":"maruti"},{"name":"John","id":2,"car":"wolks"},{"name":"John","id":3,"car":"bmw"},{"name":"Peter","id":4,"cars":"alto"},{"name":"Peter","id":5,"cars":"swift"}];

const map = source.reduce((acc, {name, ...obj}) => {
if (!acc[name]) {
acc[name] = [];
}

acc[name].push(obj);
return acc;
}, {});

const result = [];

for (let[name, items] of Object.entries(map)) {
result.push({name, items});
}

console.log(result);

关于javascript - 如果某些键使用 JavaScript 相同,则从另一个数组构建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50342200/

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