尝试为数组中的每个对象添加一个 ID。如果 id 已经存在,则 id 将增加 1,试图让自动增加功能运行。问题是,使用此函数,每个对象要么在 for each 语句内运行 for 循环时获得相同的 ID,要么obj.id of undefined
如果循环在外部运行,我将无法读取。
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
和那么你正在增加传入的 id obj
。
因此,在将 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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句