- 什么是扁平化 ?
意思是将多维数组转化为一维数组。
话不多说,直接上代码。
- 直接方式
arr.flat(Infinity);
- For 循环 + 递归
function flat(arr) { let dd = []; for(let i=0; i<arr.length; i++) { if(Array.isArray(arr[i])) { return arguments.callee(dd.concat(...arr[i])) } else { dd.push(arr[i]) } } return dd; }
- reduce + 递归
function flat(arr) { return arr.reduce((pre,cur) => { return pre.concat(Array.isArray(cur) ? flat(cur) : cur); },[]) }
- while 循环输出
while (arr.some(Array.isArray)) { arr= [].concat(...arr); }
以上均经过实践有效,当然也有其他的一些方法,考察的是对不同方法的理解和掌握程度。