6. 数组扁平化
递归遍历
js
function flatArr(arr) {
if(!(typeof arr == 'object' && arr instanceof Array)) {
throw new Error('arguments is not a array!please retry!')
}
let result = []
for(let i = 0 ; i< arr.length; i++) {
const item = arr[i]
if(Array.isArray(item)) {
result = result.concat(flatArr(arr[i]))
} else {
result.push(item)
}
}
return result
}
Array.prototype.reduce
js
function flatArr(arr) {
return arr.reduce(function(prev, curr) {
if(Array.isArray(curr)) {
return prev.concat(flatArr(curr))
} else {
return prev.concat(curr)
}
},[]
}
Array.prototype.flat
直接使用ES6的flat方法
js
Array.prototype.flat(arr)
强制类型转换
利用toString
方法,将数组转换为字符串
js
let arr = [1, 2, 3, 4, [5,6,[7,8,[9]]],10]
arr.toString().split(',') // 1,2,3,4,5,6,7,8,9,10