gpt4 book ai didi

javascript - 将递增 ID 添加到数组中的 obj

转载 作者:行者123 更新时间:2023-11-28 14:38:41 25 4
gpt4 key购买 nike

尝试为数组中的每个对象添加 ID。如果 id 已经存在,则 id 会加 1,尝试实现自动递增功能。问题是,使用此函数时,每个对象在 foreach 语句内运行 for 循环时都会获得相同的 ID,或者如果循环在外部运行,则无法读取未定义的 obj.id。

function addId(arr, obj) {
obj.id;
arr.forEach(function(obj) {
obj.id = 0;
return obj.id;
});
for(var i = 0; i <= arr.length; i++) {
if(obj.id == obj.id) obj.id++;
}
};

最佳答案

您的代码存在一些问题。首先 obj.id; 不执行任何操作。所以你应该摆脱它。同样在 forEach 中,您将值 0 作为 id 分配给每个对象,但在第二个循环中,您将检查 obj 的 id 是否为作为参数传入的 与其自身相同,因此检查将始终产生 true,然后您将递增传入的 obj 的 id >。

因此,在将 id 属性设置为 0 后,您永远不会操作数组中的对象。

您可以使用索引作为 id 的值。

此外,如果需要,您可以考虑使用诸如 Object.assign 之类的内容来防止更改数组内的原始对象。

function addId(arr) {
return arr.map(function(obj, index) {
return Object.assign({}, obj, { id: index });
});
};

// test
const input = [ { a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }];
const output = addId(input);

console.log(output);

关于javascript - 将递增 ID 添加到数组中的 obj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48946526/

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