Array.push() doesn't work as expected
本问题已经有最佳答案,请猛点这里访问。
我有一个阵列。出于测试目的,我输出如下内容:
1 2 3 4 5 6 7 | for (var i=0; i<array1.length; i++){ console.log(i + ':' + array1[i]); } 0:String1 1:String2 |
现在我有了第二个数组。我要做的是将array1的内容推入array2。
我用这条线做这个:
1 | array2.push(array1); |
号
不幸的是,第一个数组的内容AO只存在于第二个数组的一个索引中。用逗号分隔。
例如,如果我们在操作之后使用查看第二个数组的内容,它将是这样的:
1 2 3 4 5 6 7 8 9 10 | for (var i=0; i<array1.length; i++){ console.log(i + ':' + array1[i]); } 0:Old_string1 1:Old_string2 2:Old_string3 3:Old_string4 4:String1,String2 |
虽然我想把它拿出来:
1 2 | 4:String1 5:String2 |
。
您应该尝试:
1 | array2 = array2.concat(array1); |
或ES6破坏
1 | array2.push(...array1); |
号
array.push会将一个或多个对象推送到数组。不能在push()方法中传递完整数组,否则内容将被视为一个对象。要将两个数组组合成一个,请使用concat。
array.push不会这样做。您需要array.concat:
1 2 3 4 5 | var array1 = ['a', 'b', 'c']; var array2 = ['d', 'e', 'f']; console.log(array1.concat(array2)); // expected output: Array ["a","b","c","d","e","f"] |
使用
1 2 3 4 | const a1 = ["all","my","strings"]; const a2 = ["belong","together"]; Array.prototype.push.apply(a1, a2); console.log(a1); |
。
您应该使用spread操作符(
埃多克斯1〔3〕
这将把