首页 > 技术文章 > 实现多维数组变成一维数组的方法

qianxiaoniantianxin 2021-06-03 21:00 原文

方法一:

  

  let  = [1,[2,3],[4,5,[6,7]]];

  let result_str = arr.join(',').split(',');
  console.log(result_str)  // [1,2,3,4,5,6,7]

 

方法二:使用数组的concat方法,以及apply

  concat方法参数如果是一个数组,会把一个一维数组转为单个的项和前面的数组链接起来,如果是多维数组,则保留多维数组里面的项。

  let arr1 = ['3',4],

  arr2 = ['3',4,[5,6]];
  console.log([1,2].concat(arr1)); // [1, 2, "3", 4]
  console.log([1,2,].concat(arr2)); // [1, 2, "3", 4, [5,6]]
  所以使用concat方法只能把二维数组转为一维数组
  let arr3= [[1,2],'3','4',[5,6],[7]];
  console.log([].concat.apply([], arr3));  // [1,2,"3","4",5,6,7]

 

方法三:递归

function  arrMethod(arr) {
  if (!arr.length) return;
  return arr.reduce(
    (pre, cur) =>
      Array.isArray(cur) ? [...pre, ...arrMethod(cur)] : [...pre, cur],
      []
  );
}
arrMethod([1,2,[3,4,[5,6]]])  // 1,2,3,4,5,6

推荐阅读