引用我有一个数组如下数组对象数组的Javascript中
var sample = [{a:1, b: 1, c:1}, {a:1, b: 1, c:1}, {a:1, b: 1, c:1}];
我然后运行下面的代码,并尝试groupsOfItems[0].sample[0].a = 10
,groupsOfItems[0].sample[0].a
,groupsOfItems[1].sample[0].a
和groupsOfItems[2].sample[0].a
得到改变,以10
怎么办我阻止了这个?
var sample = [{a:1, b: 1, c:1}, {a:1, b: 1, c:1}, {a:1, b: 1, c:1}];
var groupsOfItems = [];
for(let i = 0; i < 10; i++) {
var item = {};
item.sample = _.clone(sample);
groupsOfItems.push(item);
}
groupsOfItems[0].sample[0].a = 10
console.log(groupsOfItems[0].sample[0].a,groupsOfItems[1].sample[0].a,groupsOfItems[2].sample[0].a);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
我为你创建了一个片段。请在将来这样做。测试代码时节省大量时间 – mplungjan
请谨慎使用库克隆对象(或者一般情况下)。如果在克隆的对象上调用方法,该方法仍将引用原始对象,并将修改原始对象,而不是克隆的对象。 –