法一:使用es6种Array新增flat()方法。flat()方法接受一个参数,指定要提取嵌套数组的结构深度,默认值为 1。
function myFlat(arr) {
return arr.flat(Infinity)
}
法二:利用reduce+isArray
function flatDeep(arr, d = 1) {
return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), [])
: arr.slice();
};
法三:利用forEach
function flatDeep(arr, res=[]){
arr.forEach(entry=> Array.isArray(entry) ? flatDeep(entry,res) : res.concat(entry));
return res;
}
参考链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat