【前端芝士树】如何完成数组的扁平化 Array flattern?
问题描述
输入:一个嵌套型数组
输出:扁平化后的数组
let array = [1, [2, 3, 4]];
let arrayDeeper = [1, [2, [3, 4]]];
如果只是两层的数据
function flatten_1(arr) {
return Array.prototype.concat.apply([], arr);
}
console.log(flatten_1(array));
如果是多层嵌套的数组
function flattenDeeper_1(arr) {
return arr.toString().split(',').map((item) => parseInt(item));
//return arr.join(',').split(',').map((item) => parseInt(item));
}
function flattenDeeper_2(arr) {
return arr.reduce((prev, current) => {
return Array.prototype.concat(prev, Array.isArray(current) ? flattenDeeper(current) : current);
})
}
function flattenDeeper_3(arr, result = []) {
for (let item of arr) {
if(Array.isArray(item)){
flattenDeeper_2(item, result);
}else{
result.push(item);
}
}
return result;
}
console.log(flattenDeeper_1(arrayDeeper));
console.log(flattenDeeper_2(arrayDeeper));
console.log(flattenDeeper_3(arrayDeeper));
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。