题目:扁平化数组 [1,2,3,[4,5,[6,7,8,[9,10,11]]]]
使实现为 [1,2,3,4,5,6,7,8,9,10,11]
1.使用递归算法
核心思路:遍历每一个数组元素 不是数组的数组元素先添加到新数组中
是数组的数组元素循环遍历 flat(数组元素)
扁平化数组 数组排序 冒泡排序 插入排序 快速排序
function flat(arr) {
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
newArr = newArr.concat(flat(arr[i]))
} else {
newArr.push(arr[i])
}
}
return newArr
}
let arr = [1, 2, 3, [4, 5, [6, 7, 8, [9, 10, 11]]]]
console.log(flat(arr))
2.使用数组api
function flat(arr) {
// console.log(arr.toString().split(",")) //["1","2","3"]
// var res = arr.toString().split(",")
// return res.map(function(item) {
// return Number(item)
// })
return arr.toString().split(",").map(function(item) {
return +item
})
}
let arr = [1, 2, 3, [4, 5, [6, 7, 8, [9, 10, 11]]]]
console.log(flat(arr))
3.使用some方法+扩展运算符
function flat(arr) {
while (arr.some(function(item) {
return Array.isArray(item)
})) {
console.log(arr, '上一次结果')
arr = [].concat(...arr)
}
return arr
}
let arr = [1, 2, 3, [4, 5, [6, 7, 8, [9, 10, 11]]]]
console.log(flat(arr))
4.使用flat方法
let arr = [1, 2, 3, [4, 5, [6, 7, 8, [9, 10, 11]]]]
console.log(arr.flat(Infinity))