Flat的不同实现

flat

数组扁平化,第三种和第四种主要用于面试问题。

// 递归实现 
function flat1(arr) {
  let res = [];

  for (const item of arr) {
    if (Array.isArray(item)) {
      res = res.concat(flat1(item))
    } else {
      res.push(item);
    }
  }
  return res;
}

// 通过...解构
function flat2(arr){
  while (arr.some(Array.isArray)) {
     arr= [].concat(...arr);
  }
  return arr;
}

// 通过toString 转化为 a,b,c,d 再通过split转为数组 会变成字符串 
function flat3(arr){
  // arr.join(',').split(',');
  return arr.toString().split(',');
}
// 通过JSON解析
function flat4(arr){
  return JSON.parse(`[${arr.toString()}]`)
}

var arr = [[3, 12, 1, 2, 2], [2, 3, 5, 5], [6, 7, 8, [11, 12, [12, 13, [14]]]]];
console.log(flat1(arr));
console.log(flat2(arr));
console.log(flat3(arr));
console.log(flat4(arr));


posted @ 2020-09-11 10:31  alohaplat  阅读(235)  评论(0)    收藏  举报