俱乐部JSON对象的唯一键在javascript中
Club JSON Object on unique key in javascript
我试图创建一个整洁的JSON对象通过俱乐部多个对象具有相同的id。以下是我尝试过的方法:1. 存储第一个对象的ID以匹配后续的ID。2. 遍历数组并检查是否有类似的id, If返回匹配,将名称作为对象推入另一个数组,否则推入一个新对象,并将存储的名称作为属性。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);
在索引引用对象上使用 Array#reduce
方法
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'}];
// object for index reference
var ind = {};
// iteraate over array
var res = data.reduce(function(arr, obj) {
// check index defined already
if (ind.hasOwnProperty(obj.id)) {
// if defined then push the name value
arr[ind[obj.id]].names.push({name: obj.name});
} else {
// else push a new object in prefered format
arr.push({ id: obj.id, names: [{ name: obj.name }] });
// define the index in reference object
ind[obj.id] = arr.length - 1;
}
// return the updated array
return arr;
// set initial value as epty array
}, []);
console.log(res);
相关文章:
- 一键提交(阻止默认)多个表单
- 通过Ajax一键提交多个表单
- 如何防止javascript一次打开过多的文件
- 一键启动按钮不起作用
- 如何一键录音并自动上传
- 使用 JavaScript 一次为一个元素设置多个属性
- 我们如何自定义排序JavaScript对象键
- 如何使用javascript在递归对象中找到基于一键的树级别
- 一键点击首先调用javascript,执行验证,然后调用控制器方法
- 如何使用javascript一键禁用引导按钮
- Javascript 循环
- 一键旋转列表
- 如何使用 javascript 一键显示确认警报
- Javascript - 具有键值对的对象,其中值是一个数组
- On/Off一键定时器Javascript
- 在javascript函数中一键打开多个窗口
- 多个弹出与一键像皮艇Javascript
- 在Javascript中一键打开3个项目
- JavaScript (jQuery?):一键切换多个类
- 使用Javascript一键添加文本到PDF按钮
- 如何一键运行多个JavaScript函数