Jas*_*bas 4 javascript arrays reference underscore.js
我有一个数组如下
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>在将对象赋予数组的属性之前,您需要克隆该对象
更换
item.sample = sample;
同
item.sample = JSON.parse(JSON.stringify(sample));
请注意,当样本对象增长时,这种克隆方法效率会降低.尝试这里显示的其他一些方法.
| 归档时间: | 
 | 
| 查看次数: | 86 次 | 
| 最近记录: |