通过索引修改数组内的相同对象

时间:2018-09-07 11:03:47

标签: javascript arrays

让我们说我们有一个数组,在该数组内有2个相同的对象,例如

var myArray = [];
myArray.push({id:1, errorMsg: null});
myArray.push({id:1, errorMsg: null});

为什么当我尝试通过index修改属性errorMsg时,该更改会影响这两个对象。例如

myArray[0].errorMsg = 'its an error';

2 个答案:

答案 0 :(得分:1)

array的元素是引用,它们可能指向同一对象,因此更改一个引用会在两个地方反映

例如

var a = {b:'hi'}
var arr = [a,a]
// if you change 
arr[0].b = 'hello'
// both members of array will change

答案 1 :(得分:0)

使用索引修改任何errorMsg只会更改该索引的值。

检查以下示例:

    var myArray = [{ id: 1, errorMsg: null },
    { id: 2, errorMsg: null },
    { id: 3, errorMsg: null }]

        
myArray[0].errorMsg = 'its an error';
myArray[2].errorMsg = 'this is last error';

for (i = 0; i < myArray.length; i++) {
    console.log(myArray[i].id + ' = ' + myArray[i].errorMsg);
}

所以您的代码是正确的,没有错误。