题目中的对象数组是什么?
是一个数组里面是对象。
一般的数组是这样的形式--[1,2,3]。 (一维数组)
对象数组的形式--[{键值对},{键值对},{键值对}]。
我呢!最近就遇见了一个关于对象数组的一个问题。
问题:
接下来我会用图文的方式简单描述我遇见的问题!
创建两个数组(数组A(空),数组B)
再向把数组B的值添加到数组A中。
Arr.push(Brr[0]);
最后改变数组A中的对象的值。
Arr[0].age = 12;
然后数组B中的对象的值也改变了!
导致出现这个问题的是因为对象。
对象是有地址的。
无论是数组A数组B中的对象的地址都是一样的。
改变的是同一个对象。
解决:
我一共找到了两种解决问题的方法。
两种方法都是改变对象的地址,让两个数组中的对象的地址不一样。
方法一:
{...Brr[0]} 这是通过把对象展开运算改变对象的地址(应该是吧)
Arr.push({ ...Brr[0] });
方法二:
通过JSON。把对象转换成JSON字符串再转换回JSON对象。
这样也是可以改变对象的地址的。
JSON.parse(JSON.stringify(Brr[0]));