Javascript 将值从ObservalArray传递到另一个,而不相互引用
我试图将值从一个Javascript 将值从ObservalArray传递到另一个,而不相互引用,javascript,knockout.js,Javascript,Knockout.js,我试图将值从一个observableArray传递到另一个observableArray而不相互引用,如果我更改了它们同步的一个可观测数组值,并且两者都具有相同的值,我就知道了 这是 JavaScript: var test = ko.observableArray([1, 2, 3]); var test2 = ko.observableArray(test()); test2()[0] = 2; console.log(test()); console.log(test2()); 输出:
observableArray
传递到另一个observableArray
而不相互引用,如果我更改了它们同步的一个可观测数组值,并且两者都具有相同的值,我就知道了
这是
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]
期望值:
[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)开始并在数组长度末尾结束的元素作为新数组
发件人:
slice函数是本机函数的observableArray等价物
JavaScript切片函数(即,它返回数组的条目
从给定的开始索引到给定的结束索引)。使命感
切片(…)相当于调用相同的方法
在底层数组(即myObservableArray().slice(…)上)
这里是对您的更新。Nice,这是故意的敲除还是特定于javascript?我添加了一条注释,解释了
slice
函数。这是故意的,是knockout@PWKad是否有任何文档说明这是故意的,也许我可以在某个地方使用它?@skmasq-再次添加了一个源代码。通过调用test()
可以返回底层数组。