目录
1、使用reduce方法和递归实现、concat、isArray
- 1、使用reduce方法和递归实现、concat、isArray
- 2、使用toString和split实现、map、Number
- 3、使用join和split实现、join、map、parseInt
- 4、使用递归实现、isArray、concat、push、map
- 5、使用es6的扩展运算符实现、concat
- 6、使用whil、some和concat实现、isArray、some
- 7、相关文章
function flatten(arr) { return arr.reduce((result, item) => { return result.concat(Array.isArray(item) ? flatten(item) : item); }, []); } console.log(flatten([1, [2, 3, [4, 5]]])); // [1, 2, 3, 4, 5]2、使用toString和split实现、map、Number
function flatten(arr) { // 返回字符串类型的数组 // return arr.toString().split(","); // 最终需要返回数字类型的数组 return arr.toString().split(",").map((item) => Number(item)); } console.log(flatten([1, [2, 3, [4, 5, [6]]]])); // [1, 2, 3, 4, 5, 6]3、使用join和split实现、join、map、parseInt
function flatten(arr) { return arr.join(",").split(",").map((item) => parseInt(item)); } console.log(flatten([1, [2, 3, [4, 5]]]));4、使用递归实现、isArray、concat、push、map
function flatten(arr) { let res = []; arr.map((item) => { if (Array.isArray(item)) { res = res.concat(flatten(item)); } else { res.push(item); } }); return res; } console.log(flatten([1, [2, 3, [4, 5]]]));5、使用es6的扩展运算符实现、concat
console.log([].concat(...[1, 2, 3, [4, 5]]));
有缺陷:当嵌套大于两层的时候就无法实现扁平化,只能实现两层以内的扁平化。
6、使用whil、some和concat实现、isArray、somefunction flatten(arr) { while (arr.some((item) => Array.isArray(item))) arr = [].concat(...arr); return arr; } console.log(flatten([1, [2, 3, [4, 5]]]));7、相关文章
博客园-js5种方式实现数组扁平化