Javascript 对象数组上的forEach/map不添加属性
我有一个对象数组。我想向该数组中的所有对象添加两个新属性。 对象在数组中的位置和数组的长度 我的代码是:Javascript 对象数组上的forEach/map不添加属性,javascript,arrays,object,foreach,Javascript,Arrays,Object,Foreach,我有一个对象数组。我想向该数组中的所有对象添加两个新属性。 对象在数组中的位置和数组的长度 我的代码是: objArr.forEach(function(element) { element.data.basics.all= objArr.length, element.data.basics.position= objArr.indexOf(element), }); 在forEach循环中添加属性。我可以在循环中打印它们。但是循环完成后,属性就
objArr.forEach(function(element) {
element.data.basics.all= objArr.length,
element.data.basics.position= objArr.indexOf(element),
});
在forEach循环中添加属性。我可以在循环中打印它们。但是循环完成后,属性就消失了
如果您尝试了这两种方法,forEach和.map都不起作用
我还尝试:
objArr.forEach(function(element) {
element.data.basics.all= objArr.length,
element.data.basics.position= objArr.indexOf(element),
return element
});
及
我在所有情况下都尝试了arrow函数,所以`…objArr.forEach((element)=>{…})它可以与forLoop一起工作,添加了新的属性
var数组=[
{人:{年龄:76},州:'ka'},
{人:{年龄:87},州:'ap'},
{人:{年龄:45},州:'tn'}
];
forEach(函数(元素、索引){
element.person.length=array.length;
element.person.index=索引;
});
console.log(array)
循环完成后”的确切含义是什么?该forEach
的大背景是什么?也不需要.indexOf(element)
;.forEach()
回调函数的第二个参数是数组的索引,因此您可以直接使用它。离题:forEach函数的第二个参数是元素的索引,因此您不需要objArr。indexOf(element)
在forEach
中返回没有任何意义。而且你发布的代码看起来也不错。你应该发布更多的代码请添加objArr
。使用你的代码,我假设你的对象结构是什么样子,我得到{all:1,position:0}
,在objArr
中有一个元素let objArr=[{data:{basics:{all:0,position:-1}}}]
objArr.map(function(element) {
element.data.basics.position = objArr.indexOf(element)
element.data.basics.all= objArr.length,
return element;
}
)