gpt4 book ai didi

javascript - 循环遍历数组并分配新数组的键

转载 作者:行者123 更新时间:2023-12-01 02:14:19 25 4
gpt4 key购买 nike

我正在尝试创建一个新数组,其键是旧数组的索引

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/

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