Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象数组上的forEach/map不添加属性_Javascript_Arrays_Object_Foreach - Fatal编程技术网

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;
     }
 )