我正在使用Node shell来测试这个:BTW,我是Javascript的新手
x = [1,2]
y = [3,4]
k = []
for ( n in x.concat(y) ) { k.push(n); }
现在输入k会打印以下内容:
[ '0', '1', '2', '3' ]
答案 0 :(得分:3)
根本不需要for循环只需指定 Array#concat
方法返回值,即连接数组。
var k = x.concat(y)
FYI:在for...in
循环中,您将获得密钥,以防它是数组索引。它被设计用于对象迭代。请改用simple for loop。根据您的要求,即使 Array#map
或 Array#forEach
也可以使用。
a.concat(b).forEach(function(e){
k.push(e);
});
如果您想将一组值推送到现有数组,请使用 Array#push
Function#apply
方法。
[].push.apply(existingArray, arrayOfValuesToPush);
在你的情况下,它将是:
[].push.apply(k, a.concat(b));
// or
[].push.apply(k, a);
[].push.apply(k, b);
答案 1 :(得分:1)
答案 2 :(得分:1)
您在通常不使用键/值对操作的数据结构上使用for...in
循环。
所以实际发生的事情是在for...in
循环的每次迭代中,您将索引传递给n并将该索引推送到新数组。
您可能想要的实际上是forEach
method native to arrays。
将您的代码更改为此类内容......
var x = [1,2];
var y = [3,4];
var k = [];
x.concat(y).forEach(function(element, index) {
k.push(element);
}
还有Array.map
方法也是数组的原生方法,它实际上会产生一个全新的数组(而不是你必须为它定义k
和push
。
var x = [1,2];
var y = [3,4];
var k = x.concat(y).map(function(element, index) {
// the return value is the element that will be at the
// new array's index.
return element;
}
答案 3 :(得分:0)
您正在推动索引,而不是实际元素。尝试这样的事情:
var x = [1,2];
var y = [3,4];
var k = [];
var z = x.concat(y);
for (var n in z) {
k.push(z[n]);
}
在此处阅读更多内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
答案 4 :(得分:0)
试试这个(在ES5中):
var k = x.concat(y);
试试这个(在ES6中):
for (let n of x.concat(y)) {
k.push(n);
}