【前端芝士树】如何完成数组的扁平化 Array flattern?
【前端芝士树】如何完成数组的扁平化 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));
相关推荐
vs00ASPNET 2020-03-05
lanyun0 2018-03-15
87374459 2019-04-29
81971235 2019-04-20
硬币0 2014-01-09
chenshi 2012-10-09
BitTigerio 2018-05-16