2016-06-29 9 views
0

私はUIにバインドされた観測可能なボタンをクリックします。観測可能な配列から新しい配列を作成し、新しい配列で操作しますが、残念ながら新しい配列の変更も古い配列に影響します。ディザコピー可観測配列ノックアウト

ディープコピーには以下のコードを使用しています。

var clonedArr = $.extend(true, [], masterArray()); 

何か不足していますか?

答えて

0

空の配列と元の配列を、$ .extendがオリジナルを変更しない方法でマージする必要があります。これはjsfiddle here(https://jsfiddle.net/t5a1xfud/)です。
例:どのように深いコピー(またはそれ以外の配列がリンクされていないことを確認してください)するhttps://jsfiddle.net/kyr6w2x3/18/

var newArr = []; 
newArr = $.extend([], self.Array(), newArr); 
0

:(他の方法がある https://jsfiddle.net/t5a1xfud/18/

self.newItems(ko.toJS(self.existingItems())); 

どのようにない深いコピーあまりにも): https://jsfiddle.net/t5a1xfud/19/

self.newItems(self.existingItems()); 

「新しいものにコピー」ボタンを使用した後の2番目の例では、配列がリンクされることに注意してください。それらはリンクされていないように見えますが、[既存のものに追加]と[新しいものに追加]の間をクリックすると、相互に影響を与えることがわかります。最初の例ではそうではありません。

関連する問題