Array(数组-扁平化)

  // 二维数组平铺
  const arr = [11, [22, 33], [44, 55], 66];
  const flatArr = [].concat(...arr); //=> [11, 22, 33, 44, 55, 66]
// 递归实现

  var a = [1, [2, [3, 4, 5]]];
  function flatten(arr) {
     
    let result = [];
    for (let i = 0; i < arr.length; i++) {
     
      if (Array.isArray(arr[i])) {
     
        result = result.concat(flatten(arr[i]));
      } else {
     
        result.push(arr[i]);
      }
    }
    return result;
  }
  flatten(a); //  [1, 2, 3, 4,5]
// reduce 函数迭代

  var arr = [1, [2, [3, 4]]];
  function flatten(arr) {
     
    return arr.reduce(function (prev, next) {
     
      return prev.concat(Array.isArray(next) ? flatten(next) : next);
    }, []);
  }
  console.log(flatten(arr)); //  [1, 2, 3, 4]
// 扩展运算符实现

  function flattenArray(arr) {
     
    const flattened = [].concat(...arr);
    return flattened.some(item => Array.isArray(item)) ?  flattenArray(flattened) : flattened;
  }
  const arr = [11, [22, 33], [44, [55, 66, [77, [88]], 99]]];
  const flatArr = flattenArray(arr); //=> [11, 22, 33, 44, 55, 66, 77, 88, 99]
// split 和 toString 共同处理

  var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

  // 其实直接toString就生成了一组序列;
  var resultArr = arr.toString().split(',');
  console.log(resultArr); //=> [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]

  var arr = [1, [2, [3, 4]]];
  function flatten(arr) {
     
    return arr.toString().split(',');
  }
  console.log(flatten(arr)); //  [1, 2, 3, 4,5]
// Array.flat(n)是ES10扁平数组的api, n表示维度, n值为 Infinity时维度为无限大  n小于零,不拉平

[1,[2,3]].flat(2) // [1,2,3]

[1,[2,3,[4,5]].flat(3) // [1,2,3,4,5]

[1[2,3,[4,5[...]].flat(Infinity) // [1,2,3,4…n]


  var arr = [1, [2, [3, 4]]];
  function flatten(arr) {
     
    return arr.flat(Infinity);
  }
  console.log(flatten(arr)); //  [1, 2, 3, 4,5]
// 正则和 JSON 方法共同处理

  let arr = [1, [2, [3, [4, 5]]], 6];
  function flatten(arr) {
     
    let str = JSON.stringify(arr);
    str = str.replace(/(\[|\])/g, '');
    str = '[' + str + ']';
    return JSON.parse(str);
  }
  console.log(flatten(arr)); //  [1, 2, 3, 4,5]

你可能感兴趣的:(Javascript,javascript,html,typescript,node.js,前端)