【发布时间】:2019-03-14 16:08:14
【问题描述】:
我有一个对象数组。我想为该数组中的所有对象添加两个新属性。 对象在数组中的位置和数组的长度。
我的代码是:
objArr.forEach(function(element) {
element.data.basics.all= objArr.length,
element.data.basics.position= objArr.indexOf(element),
});
在 forEach 循环中添加了属性。我可以在循环中打印它们。但是在循环完成后,属性就消失了。
如果尝试过Add property to an array of objects,但 forEach 和 .map 都不起作用。
我也试过了:
objArr.forEach(function(element) {
element.data.basics.all= objArr.length,
element.data.basics.position= objArr.indexOf(element),
return element
});
和
objArr.map(function(element) {
element.data.basics.position = objArr.indexOf(element)
element.data.basics.all= objArr.length,
return element;
}
)
我在所有情况下都尝试了箭头函数,所以 `...objArr.forEach((element)=>{...})
【问题讨论】:
-
“循环结束后”究竟是什么意思?
forEach的更大背景是什么?也不需要.indexOf(element);.forEach()回调的第二个参数是数组的索引,所以你可以使用它。 -
off-topic:forEach 的第二个参数是元素的索引,所以你不需要
objArr.indexOf(element) -
返回
forEach没有任何意义。而且您发布的代码看起来也不错。你应该发布更多代码 -
请加
objArr。 -
使用您的代码,以及我假设您的对象结构的样子,我得到
{ all: 1, position: 0 },其中一个元素位于objArr...let objArr = [{ data: { basics: { all: 0, position: -1 } } }]
标签: javascript arrays object foreach