专栏首页一只想做全栈的猫【前端芝士树】如何完成数组的扁平化 Array flattern?

【前端芝士树】如何完成数组的扁平化 Array flattern?

【前端芝士树】如何完成数组的扁平化 Array flattern?

问题描述

输入:一个嵌套型数组 输出:扁平化后的数组

let array = [1, [2, 3, 4]];
let arrayDeeper = [1, [2, [3, 4]]];

如果只是两层的数据

function flatten_1(arr) {
  return Array.prototype.concat.apply([], arr);
}

console.log(flatten_1(array));

如果是多层嵌套的数组

function flattenDeeper_1(arr) {
  return arr.toString().split(',').map((item) => parseInt(item));
  //return arr.join(',').split(',').map((item) => parseInt(item));
}

function flattenDeeper_2(arr) {
  return arr.reduce((prev, current) => {
    return Array.prototype.concat(prev, Array.isArray(current) ? flattenDeeper(current) : current);
  })
}
function flattenDeeper_3(arr, result = []) {
  for (let item of arr) {
    if(Array.isArray(item)){
      flattenDeeper_2(item, result);
    }else{
      result.push(item);
    }
  }
  return result;
}
console.log(flattenDeeper_1(arrayDeeper));
console.log(flattenDeeper_2(arrayDeeper));
console.log(flattenDeeper_3(arrayDeeper));

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【前端芝士树】Array的属性及方法整理(参照MDN)

    CloudCat
  • 【前端芝士树】如何完成数组的去重 Array Unique?

    CloudCat
  • 【Rxjs】Rxjs_Subject 及其衍生类

    在 RxJS 中,Observable 有一些特殊的类,在消息通信中使用比较频繁,下面主要介绍较常用的几个类:

    CloudCat
  • 唯品会纽约时装周开启95后时装秀 消费C2F时代真的要来了!

    纽约时间2017年2月13日(北京时间2月14日),纽约时代广场大屏幕亮起“中国95后流行大数据先锋时装秀”,好奇的路人纷纷驻足!

    曾响铃
  • 有向图的环和有向无环图

    本篇主要分享关于有向图的环和有向无环图(DAG,估计做大数据的同学到处都可以看到),所以相关概念我就不做详细介绍了。

    大数据和云计算技术
  • phpCOW机制(写时复制)

    写时复制(Copy-on-Write,也缩写为COW),顾名思义,就是在写入时才真正复制一份内存进行修改。 COW最早应用在*nix系统中对线程与内存使用的优化...

    仙士可
  • Golang在京东列表页实践总结

    Golang在京东列表页实践总结 作者:张洪涛 10余年软件开发和设计经验,曾就职于搜狐、搜狗、前matrixjoy公司联合创始人、甘普科技CTO。 目前线上状...

    李海彬
  • 灵活运用JS开发技巧

    何为技巧,意指表现在文学、工艺、体育等方面的巧妙技能。代码作为一门现代高级工艺,推动着人类科学技术的发展,同时犹如文字一样承托着人类文化的进步。

    前端迷
  • 警惕Python编程中异常处理结构可能的坑

    所谓异常,主要是指由于测试不充分导致在实际运行时遇到意料之外的错误而引发的代码崩溃。例如让用户输入两个数然后输出两个数的商,结果用户把除数输入为0。例如让用户输...

    Python小屋屋主
  • JQuery选择器

    用户3159471

扫码关注云+社区

领取腾讯云代金券