利用Array.prototype.some()解决
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
比如
[1,2,3].some(function (item) {
return item > 6
})
// =>false
[1,2,3].some(function (item) {
return item > 3
})
// =>true
扁平化代码
function fn(arr) {
while (arr.some((item)=>Array.isArray(item))) {
arr = [].concat(...arr)
}
return arr
}
console.log(fn(arr))
利用递归
function myflat() {
var aarr = [];
var fn = (arr)=>{
for (let i = 0; i <arr.length ; i++) {
if (Array.isArray(arr[i])){
fn(arr[i]);
}else{
aarr.push(arr[i])
}
}
}
fn(this);
return aarr;
}
Array.prototype.myflat = myflat;