20191015

  • Array Flattening
  1. es2019 method

    arr.flat(Infinity)

  2. Using helper function

    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. Without helper function

    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. Using some

    let flatten = (arr) => {
    //concat method flattens one level each time
    let res = [].concat(…arr);
    return res.some(Array.isArray) ? flatten(res) : res;
    }

  5. Using reduce

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

  6. Using toString

    arr.toString().split(‘,’);

  • Remove specified element from array

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

  • Promise Batch Execution