数组的扁平化

148 阅读1分钟
方法1
function myFlatten(arr) {
    let res = [];
    for(let i = 0; i < arr.length; i++) {
        if(Array.isArray(arr[i])) {
            res = res.concat(myFlatten(arr[i]));
        }else {
            res = res.concat(arr[i]);
        }
    }
    return res;
}
方法2 -reduce
let arr = [1, 2, [3, 4, [5, 6]], [7, 8]];
function myFlatten(arr) {
   return arr.reduce((target, cur) => {
   // 和 第一种方法一样的思路 只是这里使用了 reduce这个方法
       if(Array.isArray(cur)) {
           target = target.concat(myFlatten(cur));
       }else {
           target.push(cur);
       }
       return target
   }, []);
}
方法3 使用while循环
let arr = [1, 2, [3, 4, [5, 6]], [7, 8]];
function myFlatten(arr) {
// 如果数组中含有数组 则会为true 进入里面的循环 一层一层去掉循环
    while(arr.some(item => Array.isArray(item))) {
    // 去掉一层循环 
        arr = [].concat(...arr);
    }
    return arr
}
console.log(myFlatten(arr));