Deepcopying可观察arrays淘汰赛
我有一个绑定到UI的observable,On按钮单击我从可观察数组创建一个新数组并使用新数组进行操作但不幸的是,新数组中的任何更改也会影响旧数组。
我使用下面的代码进行深度复制。
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());
请注意,在使用“复制到新”按钮后的第二个示例中,将链接数组。 它们似乎没有链接,但如果您在“添加到现有”和“添加到新”之间进行交替点击,您将看到它们确实会影响彼此。 与第一个例子不同。