0%

20191015

  • 数组打平
  1. es2019方法

    arr.flat(Infinity)

2.借助helper函数

let flatten = (arr) => {
    let result=[]
    let loop = (arr) => {
        for (let i = 0; i < arr.length; i++) {
            if (Array.isArray(arr[i])) {
                loop(arr[i]);
            }else{
                result.push(arr[i]);
            }
        }
    }
    loop(arr);
    return result;
}

3.不用helper函数

let flatten(arr) =>  {
    let res = [];

    let n = arr.length;
    for (let i = 0; i < n; i++) {
        if (Array.isArray(arr[i])) {
            res = res.concat(flatten(arr[i]));
        }
        else {
           res.push(arr[i]);
        }
    }

    return res;
}

4.使用some

let flatten = (arr) => {
//concat方法每次会拉平一层
    let res = [].concat(...arr);
    return res.some(Array.isArray) ? flatten(res) : res;
  }

5.使用reduce

let flatten = (arr) =>{
   return arr.reduce(
     (pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur)
   ,[])
}

6.使用toString

arr.toString().split(',');
  • 删除数组中指定元素

    let remove = (arr, item) => {
    for (let i = 0; i < arr.length; i++) {
    if (arr[i] === item) {
    arr.splice(i, 1);
    i–;
    }
    }
    return arr;
    }

  • Promise分批执行