数组扁平化的几种方法
- 利用reduce递归,直到每一项都不是数组
function flatten (arr) { return arr.reduce((prev, curr) => { return prev.concat(Array.isArray(curr) ? flatten(curr) : curr); }, []); }
- 将其转化为字符串(这样就达到了扁平化的目的)再转化为数组然后再将每一项转化为数字
function flatten (arr) { return arr.toString().split(',').map((item) => Number(item)) }
- 如果是数组就将其连接递归,直到每一项都不是数组
function flatten (arr) { let res = [] arr.forEach(item => { if (Array.isArray(item)) { res = res.concat(flatten(item)) } else { res.push(item) } }) return res }
- 利用拓展运算符,如果存在数组就继续连接
function flatten (arr) { while (arr.some(item => Array.isArray(item))) { arr = [].concat(...arr) } return arr }