纯用函数递归解决:
思路:循环时判断是否是数组,是数组,递归该数组,并拼接到空数组中,如果不是数组,就添加进空数组中
var arr = [1, 2, 3, [4, 5, [6, 7, []]], 8, 9]
function bianping(arr) {
let _arr = []
for (let i = 0; i < arr.length; i++) {
if ( Array.isArray(arr[i]) ) {
_arr = _arr.concat(bianping(arr[i]))
}else {
_arr.push(arr[i])
}
}
return _arr
}
console.log( bianping(arr) )
使用Array.prototype.falt()
用于将嵌套的数组拉平,变成一维数组。该方法是ES6中的,返回一个新的数组,对原数据没有影响。flat()默认只会扯平一层,若要处理多层的嵌套数组,可以将flat()方法的参数写成一个整数;若无论多少层都要转为一维数组,可以使用Infinity关键字作为参数,若有空位则会跳过。