什么是数组扁平化呢?如何实现呢?
数组扁平化就是将一个多维数组转换成一个一维数组。
可以利用接下来的几种方法实现。
1 利用数组reduce方法
function flatten1(arr) {
return arr.reduce((result, item)=> {
return result.concat(Array.isArray(item) ? flatten1(item) : item)
},[])
}
var arr = [1,2,[3,4,5,6,7]]
console.log(flatten1(arr))
2 利用数组jion()方法
先将数组转换成字符串,然后将字符串转成数组,然后遍历数组转换数据类型。
function flatten2(arr) {
console.log(arr.join(','))
console.log(arr.join(',').split(','))
return arr.join(',').split(',').map(function(item) {
return parseInt(item); //注意,parseInt此方法适用于数组元素为数字类型。
})
}
var arr = [1,2,[3,4,5,6,7]]
console.log(flatten2(arr))
3 递归遍历
function flatten3(arr){
var trr = []
for(let i in arr){
if(Array.isArray(arr[i])){
trr = trr.concat(flatten3(arr[i]))
}else{
trr.push(arr[i])
}
}
return trr
}
var arr = [1,2,[3,4,5,6,7]]
console.log(flatten3(arr))
4 利用es6中的flat方法
var arr = [1,2,[3,4,5,6,7]]
console.log(arr.flat(Infinity))
5 总结
总的思想就是:先遍历数组arr,若arr[i]为数组则递归遍历,直至arr[i]不为数组,然后与之前的结果进行连接。
- 本文作者: étoile
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!