我正在尝试创建一个新数组,其键是旧数组的索引
var array = [
{"tom": "red", "part":"green", "brow_id":45},
{"tom": "red", "part":"yellow", "brow_id":1},
{"tom": "red", "part":"yellow", "brow_id":2},
{"tom": "maroon", "part":"cyan", "brow_id":45}
];
var newarray = {};
array.forEach(function(elem) {
newarray[elem.brow_id] = elem;
});
新组成的数组是这样的
45: {"tom": "red", "part":"green", "brow_id":45},
1: {"tom": "red", "part":"yellow", "brow_id":1},
2: {"tom": "red", "part":"yellow", "brow_id":2},
我希望它包含旧数组的所有 id,如下所示
45: [{"tom": "red", "part":"green", "brow_id":45},{"tom": "maroon", "part":"yellow", "brow_id":45}]
1: {"tom": "red", "part":"yellow", "brow_id":1},
2: {"tom": "red", "part":"yellow", "brow_id":2},
出了什么问题?
最佳答案
您可以检查是否给定了属性并分配元素,否则检查数组,如果没有则创建数组。稍后推送该元素。
var array = [{ tom: "red", part: "green", brow_id: 45 }, { tom: "red", part: "yellow", brow_id: 1 }, { tom: "red", part: "yellow", brow_id: 2 }, { tom: "maroon", part: "cyan", brow_id: 45 }],
object = {};
array.forEach(function(elem) {
if (!object[elem.brow_id]) {
object[elem.brow_id] = elem;
return;
}
if (!Array.isArray(object[elem.brow_id])) {
object[elem.brow_id] = [object[elem.brow_id]];
}
object[elem.brow_id].push(elem);
});
console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 循环遍历数组并分配新数组的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49563617/