2015-10-20 46 views
0

我有以下代码的值:保存状态和Javascript数组

var cards = [ 
    { 
     name: 'John', 
     age: 26 
    }, 
    { 
     name: 'Marc', 
     age: 27 
    }, 
    { 
     name: 'Nathan', 
     age: 21 
    } 
]; 
var save = cards; 
for(var i = 0;i < cards.length; i++){ 
    if(i == 0){ 
     cards.splice(i,1); 
    } 
} 
cards = save; 

,并在高端显卡和保存都一样,马克和Nathan。我希望我的牌是之前的阵列,但我不明白为什么它不是。

这里是一个的jsfiddle:https://jsfiddle.net/6g8bkauo/

回答

2
var save = cards.slice() 

NB。卡片引用,每个数组中的对象仍将被共享。

+0

它的工作很棒!谢谢! – Hammerbot

0

你引用数组,你必须做出一个副本,只是用lodash

var save = _.cloneDeep(cards); 

或不带库做这样的:

var save = JSON.parse(JSON.stringify(cards)); 
+0

这是一个非常沉重的方法,如果你只是需要容器去链接... – dandavis