首页 > 解决方案 > 通过索引修改数组内的相同对象

问题描述

假设我们有一个数组,并且在该数组内有 2 个相同的对象,例如

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

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

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

标签: javascriptarrays

解决方案


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

例如

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

推荐阅读