1. 程式人生 > 其它 >Array(陣列-扁平化)

Array(陣列-扁平化)

技術標籤:Javascriptjavascripthtmltypescriptnode.js前端

  // 二維陣列平鋪
  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]