繁体   English   中英

深度复制可观察到的阵列基因敲除

[英]Deepcopying observable array knockout

我有一个绑定到UI的可观察对象,单击按钮时,我正在从可观察数组创建一个新数组,并使用新数组进行操作,但是不幸的是,新数组中的任何更改也会影响旧数组。

我正在使用下面的代码进行深度复制。

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

我错过了什么吗? 您可以在这里找到jsfiddle( https://jsfiddle.net/t5a1xfud/ )了解更多详细信息

您需要以$ .extend不会修改原始数组的方式合并空数组和原始数组。
范例: https : //jsfiddle.net/kyr6w2x3/18/

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

如何进行深层复制(或确保未链接数组): https : //jsfiddle.net/t5a1xfud/18/

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

如何不进行深层复制(还有其他方法): https : //jsfiddle.net/t5a1xfud/19/

self.newItems(self.existingItems());

请注意,在第二个示例中,使用“复制到新”按钮后,将链接阵列。 它们似乎没有链接,但是如果您在“添加到现有”和“添加到新的”之间交替单击,将会看到它们确实会相互影响。 第一个例子并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM