2021-07-10 补全 flat 函数

flat([1, [2, 3, [4]], [5, 6]]) // 返回 [1,2,3,4,5,6]

const flat = (arr, count) => {
  let result = [];
  if(!Array.isArray(arr) || typeof count !== 'number') return result;
  if(count <= 0) return arr;
  let flag = true;
  arr.forEach(v => {
    if(Array.isArray(v)) {
      result.push(...v);
      flag = false;
    } else {
      result.push(v);
    }
  })
  if(!flag) {
    result = flat(result, count-1);
  }
  return result;
}

reduce简化版

const flat = (arr, count) => {
  if(!Array.isArray(arr)) {
    throw new Error('Must input a Array!!!');
  }
  return count > 0 ? arr.reduce((acc, cur) => acc.concat(
    Array.isArray(cur) ? flat(cur, count - 1) : cur
  ), []) : arr;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容