数组扁平化实现方法总结
❝作者:Paula Hu
❞
❝博客:掘金主页、知乎主页、GitHub主页
❞
❝点赞是对原创者最大的肯定,我希望在这里看到你努力的身影~~~😘😘😘
❞
思路一
- 思路:利用reduce递归,判断是否为数组,直到每一项都不是数组
- 代码:
function flatten(arr) {
return arr.reduce( (result,item)=>{
return result.concat(Array.isArray(item) ? flatten(item) : item)
} ,[])
}
思路二
- 思路:将其转化为字符串(这样就达到了扁平化的目的),再转化为数组,然后再将每一项转化为数字
- 代码:
function flatten(arr) {
return arr.toString().split(',').map(item=>Number(item))
}
思路三
- 思路:使用ES6语法 flat()将数组拉平
- 代码:
function flatten(arr) {
return arr.flat(Infinity)
}
❝flat默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,不确定层数可以写Infinity
❞
思路四
- 思路:利用拓展运算符,如果存在数组就继续连接
- 代码:
function flatten(arr) {
while(arr.some(item => Array.isArray(item))){
arr = [].concat(...arr)
}
return arr
}