Javascript 不使用concat方法添加两个数组
这是我想做的一个例子Javascript 不使用concat方法添加两个数组,javascript,Javascript,这是我想做的一个例子 function test(r){ var arr = ['d','e','f']; r.push(arr); /* More Code */ return r; } var result = test(['a','b','c']); alert(result.length);//I want this to alert 6 我需要做的是传入一个数组并将其他数组附加到它的末尾,然后返回该数组。由于通过引用传递,我不能使用array.concat(a
function test(r){
var arr = ['d','e','f'];
r.push(arr);
/*
More Code
*/
return r;
}
var result = test(['a','b','c']);
alert(result.length);//I want this to alert 6
我需要做的是传入一个数组并将其他数组附加到它的末尾,然后返回该数组。由于通过引用传递,我不能使用array.concat(array2)代码>。有没有一种方法可以做到这一点,而不用像for循环那样逐个添加元素。我尝试了类似r.push(arr.join())代码>但这也不起作用。此外,我还希望在数组中包含对象,以便真正实现r.push(arr.join())代码>工作不太好
>>> var x = [1, 2, 3], y = [4, 5, 6];
>>> x.push.apply(x, y) // or Array.prototype.push.apply(x, y)
>>> x
[1, 2, 3, 4, 5, 6]
或者,您现在可以使用
//generate a new array
a=[...x,...y];
//or modify one of the original arrays
x.push(...y);
这是,我只是发布了我做的测试来验证它。
所有信贷都应归于emulbreh
// original array
var r = ['a','b','c'];
function test(r){
var arr = ['d','e','f'];
r.push.apply(r, arr);
/*
More Code
*/
return r;
}
var result = test( r );
console.log( r ); // ["a", "b", "c", "d", "e", "f"]
console.log( result === r ); // the returned array IS the original array but modified
错误,返回的数组不是传递给函数的修改过的数组,而是使用apply
将数组的所有成员推到另一个数组上的有趣用法+1我以前见过apply方法,但从未真正理解过它(请注意,self需要学习apply),但它确实是一种简洁的方式来做我想做的事情。但是,第二种方法与第一种方法有何不同?使用Array.prototype而不是x.push.apply.两者是等效的。调用x.push(y)
意味着“使用作用域x
和参数[y]
调用函数x.push
。在这种情况下x.push
解析为Array.prototype.push
,因此:Array.prototype.push.apply(x,[y])
。我只提到了第二种形式,因为它有时比只引用x
一次更好。x.push.apply(x,y)
为我解决了它,特别是第二种x
,尽管我不明白为什么会这样
// original array
var r = ['a','b','c'];
function test(r){
var arr = ['d','e','f'];
r.push.apply(r, arr);
/*
More Code
*/
return r;
}
var result = test( r );
console.log( r ); // ["a", "b", "c", "d", "e", "f"]
console.log( result === r ); // the returned array IS the original array but modified