Jon*_*Jon 2 arrays concatenation
在尝试使用reduce方法展平数组之后,我尝试使用类似于for循环的方法.任何人都可以解释为什么for循环使用concat不会使数组变平?PS我知道我可以使用带有Array.isArray的嵌套for循环来展平.在看到如何减少数组变平之后,只是期望concat在for循环中工作.
var arrays = [
[1, 2, 3],
[4, 5],
[6]
];
console.log(arrays.reduce(function(arr, elem) {
return arr.concat(elem);
}, []));
function flatten(arr) {
var flat = [];
for (var i = 0; i < arr.length; i++) {
flat.concat(arr[i]);
}
return flat;
}
console.log(flatten(arrays));Run Code Online (Sandbox Code Playgroud)
concat不修改数组.要使代码工作,您必须为其分配值,然后它将执行相同的操作
var arrays = [[1,2,3], [4,5], [6]];
function flatten(arr) {
var flat = [];
for (var i = 0; i < arr.length; i++) {
flat = flat.concat(arr[i]);
}
return flat;
}
console.log(flatten(arrays));Run Code Online (Sandbox Code Playgroud)
只需一个旁注 - 使用ES6,您可以使用扩展运算符更容易地展平阵列 [].concat(...arr);
var arrays = [[1,2,3], [4,5], [6]];
function flatten(arr) {
return [].concat(...arr);
}
console.log(flatten(arrays));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4154 次 |
| 最近记录: |