Tam*_*mas 7 javascript arrays concat
我有两个数组,一个作为函数的引用(参数),另一个作为函数的一部分创建 - 完全相同的场景如下所述:
我按照上面的建议使用push.apply()方法,但有人可以向我解释,为什么我不能使用concat()合并两个数组,如果数组作为参考发送到函数中?
use*_*674 10
请参阅MDN 上的Array.concat:
对新阵列的任何操作都不会对原始阵列产生任何影响,反之亦然.
这使得它的表现有所不同,从Array.push.apply它会变异原数组对象-的返回值Array.concat必须使用.否则,它的工作原理如上面的MDN链接所述.
如果使用concat原始数组将不加修改.如果您有参考它,您将看不到新元素.
var arr1 = [ "a", "b" ];
var arr2 = [ "c", "d" ];
arr1.push.apply(arr1, arr2);
Run Code Online (Sandbox Code Playgroud)
基本上这样做:
[ "a", "b" ].push("c", "d");
Run Code Online (Sandbox Code Playgroud)
apply将数组转换为参数列表.第一个参数apply是context顺便说一下,arr1在这种情况下,因为你想要推送应用arr1.
你可以使用concat:
var arr1 = [ "a", "b" ];
var arr2 = [ "c", "d" ];
var arr3 = arr1.concat(arr2);
Run Code Online (Sandbox Code Playgroud)
这样就保留了原件arr1.您已经创建了一个新的数组,其中包含两个元素arr1和arr2元素.如果您对原件有参考,arr1则将不加修改.这可能是不想使用的理由concat.