Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将值从ObservalArray传递到另一个,而不相互引用_Javascript_Knockout.js - Fatal编程技术网

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()
可以返回底层数组。