Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 如何在JS中以变异的方式连接数组?_Javascript_Concatenation - Fatal编程技术网

Javascript 如何在JS中以变异的方式连接数组?

Javascript 如何在JS中以变异的方式连接数组?,javascript,concatenation,Javascript,Concatenation,在JS中以变异的方式连接数组的最佳方法是什么?我的问题是: var a = [1,2,3] var b = a; a = a.concat([4,5,6]) //<-- typical way of array concatenation in JS console.log(a) //[1,2,3,4,5,6] console.log(b) //[1,2,3] <-- I'd like it to be the same like a here var a=[1,2,3] var

在JS中以变异的方式连接数组的最佳方法是什么?我的问题是:

var a = [1,2,3]
var b = a;
a = a.concat([4,5,6]) //<-- typical way of array concatenation in JS
console.log(a) //[1,2,3,4,5,6]
console.log(b) //[1,2,3] <-- I'd like it to be the same like a here
var a=[1,2,3]
var b=a;
a=a.concat([4,5,6])/您可以将“a”保留为属性,以便通过引用访问:

var myObj = {};
myObj.a = [1,2,3]
var b = myObj;
myObj.a = myObj.a.concat([4,5,6])

console.log(myObj.a);
console.log(b.a);

push
变异数组,但它需要参数序列,因此我们使用
apply

var a = [1,2,3]
var b = a
a.push.apply(a, [4,5,6])
console.log(a) //=> [1, 2, 3, 4, 5, 6]
console.log(b) //=> [1, 2, 3, 4, 5, 6]
在ES6中,可以使用扩展运算符

a.push(...[4, 5, 6])

您可以使用以下事实:
push
可以接受数量可变的参数,并将所有参数推送到数组的末尾。然后你可以写:

a.push.apply(a, [1, 2, 3]);

As
apply
将参数数组转换为函数的参数列表。

您可以使用
push。在此处apply
更新
a
,而无需创建新变量:

a.push.apply(a, [4,5,6]);
或者更容易理解:

Array.prototype.push.apply(a, [4,5,6]);

简而言之,调用函数
push
,第一个参数设置为
this
(对象上下文),第二个参数设置为数组。例如,它相当于a.push(element1,…,element10)
;a、 推送呼叫(a、10、20、30);console.log(a);//=>[1, 2, 3, 10, 20, 30]