gpt4 book ai didi

javascript - javascript中唯一键上的俱乐部JSON对象

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

我试图通过组合多个具有相同 ID 的对象来创建一个更简洁的 JSON 对象。这是我尝试过的: 1. 存储第一个对象的 ID 以匹配后续 ID。 2. 遍历数组并检查相似的 ID,如果返回匹配项,则将名称作为对象推送到另一个数组中,否则将名称作为属性推送到一个新对象中。 3. 空名。

有很多条件可以检查对象是否是数组的最后一个元素等等。我只是在寻找一种优化的方法来实现这一目标。考虑到问题的具体性质,我无法在 SO 中找到完全相似的问题。

我有一个像这样的 JSON 对象:

[
{
id: 1,
name: 'John'
},
{
id: 1,
name: 'Jack'
},
{
id: 2,
name: 'Drake'
},
{
id: 2,
name: 'Joey'
},
{
id: 3,
name: 'Justin'
},
{
id: 3,
name: 'Rob'
}
]

我想将具有相似 ID 的对象组合在一起,有点像这样:

[{
id: 1,
names: [{
name: 'John'
},
{
name: 'Jack'
}]
},
{
id: 2,
names: [{
name: 'Drake'
},
{
name: 'Joey'
}]
},
{
id: 3,
names: [{
name: 'Justin'
},
{
name: 'Rob'
}]
}]

最佳答案

你可以使用 Array#forEach和哈希的对象。

var data = [{ id: 1, name: 'John' }, { id: 1, name: 'Jack' }, { id: 2, name: 'Drake' }, { id: 2, name: 'Joey' }, { id: 3, name: 'Justin' }, { id: 3, name: 'Rob' }],
grouped = [];

data.forEach(function (a) {
if (!this[a.id]) {
this[a.id] = { id: a.id, names: [] };
grouped.push(this[a.id]);
}
this[a.id].names.push({ name: a.name });
}, Object.create(null));

console.log(grouped);

关于javascript - javascript中唯一键上的俱乐部JSON对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39138220/

25 4 0
文章推荐: NOT foo AND NOT bar AND NOT baz 的 JavaScript RegExp
文章推荐: javascript - 输入表单的 jquery 占位符文本
文章推荐: ios - 尝试将圆圈添加到 iOS 照片库中的图像上
文章推荐: javascript - 根据里面的<iframe>改变
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com