// 1. 使用reduce+递归实现
const flatten = (list, level = +Infinity) => {
if (!Array.isArray(list)) return list
return list.reduce((arr, item)=> {
if (level) {
let val = flatten(item, level - 1)
Array.isArray(val) ? arr.push(...val) : arr.push(val)
} else {
arr.push(item)
}
return arr
}, [])
}
// 2. 利用concat能合并数组的特性
const flatten = (list, level = +Infinity) => {
let res = list
for (let i = 0; i < level; i++) {
res = [].concat(...res)
console.log(res);
if (!res.some(item => Array.isArray(item))) break
}
return res
};
// 3. 利用flat函数
const flatten = (list, level = +Infinity) => {
return list.flat(level)
}
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
var newArr = flatten(list, Infinity)
js 几种数组扁平化的实现方法
最新推荐文章于 2021-12-10 16:30:45 发布