将值从 observableArray 传递到另一个数组,而不相互引用

Pass values from observableArray to another without referencing to each other

本文关键字:引用 数组 另一个 observableArray      更新时间:2023-09-26

我正在尝试将值从一个observableArray传递到另一个而不相互引用,如果我更改它们同步的可观察数组值之一并且两者都具有相同的值,那就知道了。

这是jsFiddle

JavaScript

var test = ko.observableArray([1, 2, 3]);
var test2 = ko.observableArray(test());
test2()[0] = 2;
console.log(test());
console.log(test2());

输出:

[2,2,3]
[2,2,3]

预期:

[1,2,3]
[2,2,3]

尝试这样做:

var test2 = ko.observableArray(test().slice(0));

取而代之的是:

var test2 = ko.observableArray(test());

这是创建底层阵列克隆的简单方法;现在您正在引用同一个阵列。

slice 函数基本上选择从给定索引(在本例中为 0)开始并在数组长度末尾结束的元素(因为它未指定)作为新数组。

来自 KnockoutJS:

切片函数是相当于本机的 observableArray JavaScript 切片函数(即,它返回数组的条目 从给定的开始索引到给定的结束索引)。叫 myObservableArray.slice(...) 等效于调用相同的方法 在底层数组上(即 myObservableArray().slice(...))。

下面是对 JSFiddle 的更新。