我正在尝试编写扁平化数组,但是当代码到达嵌套数组时它为什么停止检查?它输出的是 [ 1, 2, 3, [ [ [Object] ] ] ]
。
请解释为什么它停止遍历嵌套数组以及为什么它不连接。谢谢
flatten = function(nestedArray, result) {
result = [];
each(nestedArray, function(item){
if(Array.isArray(item)){
result = result.concat(item);
} else {
result.push(item);
}
});
return result;
};
flatten([1, [2], [3, [[[4]]]]])
最佳答案
JavaScript 中没有像 each
这样的方法,你能做的就是使用 Array#forEach
与 recursion function .
var flatten = function(nestedArray, result) {
result = [];
// iterate over array
nestedArray.forEach(function(item) {
if (Array.isArray(item)) {
// do recursion to flatten the inner array and concatenate
result = result.concat(flatten(item));
} else {
result.push(item);
}
});
return result;
};
console.log(flatten([1, [2], [3, [[[4]]]]]));
关于javascript - 为什么代码停止检查是否是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37959576/