不积跬步无以至千里
实现是否可遍历
function isFlattenable(value){
return Array.isArray(value) ||
Object.prototype.toString.call(value)==='[object Arguments]'||
Boolean(value && value[Symbol.isConcatSpreadable])
}
实现 flatten
function flatten(array){
if(!isFlattenable(array)) return [];
const result = [];
for(let value of array){
if(isFlattenable(value)){
result.push(...flatten(value))
}else{
result.push(value)
}
}
return result;
}
// flatten([[1,2,3],[23,232,2323121212,23]])
// 结果--> [1, 2, 3, 23, 232, 2323121212, 23]
结束
1.学到新的知识点 Symbol.isConcatSpreadable 在Array.prototype.concat的时候是否将数组进行展开合并