[英]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.