// 声明一个数组
let arr = [
[3],
[4, 5],
[6, [7, [8, 9]]],
1,
null,
2
]
1. 使用 ES6 新方法
Array.prototype.flat() 用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。
参数为拉平的层数,默认为1,
如果不知道有多少层,可以用 Infinity
arr.flat(Infinity) // [3, 4, 5, 6, 7, 8, 9, 1, null, 2]
2. 使用 toString() 方法
Array.prototype.toString() 方法返回一个字符串,表示指定的数组及其元素
注意:与
join()
的行为一致,toString()
将空槽视为undefined
并生成一个额外的分隔符
arr.toString().split(',') // ['3', '4', '5', '6', '7', '8', '9', '1', '', '2']
3. 使用递归
let newArr = []
function toFlat(data) {
data.forEach(x => {
if(Array.isArray(x)) {
toFlat(x)
return
}
newArr.push(x)
})
}
flat(arr)
console.log(newArr) // [3, 4, 5, 6, 7, 8, 9, 1, null, 2]