资讯专栏INFORMATION COLUMN

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

2shou / 366人阅读

摘要:前端芝士树如何完成数组的扁平化问题描述输入一个嵌套型数组输出扁平化后的数组如果只是两层的数据如果是多层嵌套的数组

【前端芝士树】如何完成数组的扁平化 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));

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99117.html

相关文章

  • 前端芝士如何完成数组去重 Array Unique?

    摘要:前端芝士树如何完成数组的去重输入推荐方法其他方法利用实现数据的去重 【前端芝士树】如何完成数组的去重 Array Unique? 输入 const users = [{ id: 1, name: a }, { id: 2, name: a }, { id: 3, name: b }, { id: 4, name: v }]; 推荐方法 Array.prototype.u...

    doodlewind 评论0 收藏0
  • 前端芝士Array属性及方法整理(参照MDN)

    摘要:本文主要是我自己对的一些整理,参考自,其中的分类有些不准确之处,还望见谅的基本属性属性的一些方法增删改查基础功能增删改查基础功能增删改删除数组的第一个元素删除数组的最后一个元素在数组的开头一个或多个元素,在数组的末尾增加一个或者多个元素数组 本文主要是我自己对Array的一些整理,参考自MDN,其中的分类有些不准确之处,还望见谅 Array const arr = [1, 2, 3, ...

    MoAir 评论0 收藏0
  • 前端芝士】浅拷贝、深拷贝以及Object.assign()作用、克隆对象、复制数组

    摘要:前端芝士树浅拷贝深拷贝以及的作用首先还是得回到的基本数据类型。值类型深拷贝数值布尔值字符串。它接受任意数量的源对象,主要作用就是枚举它们的所有属性并分配给。 【前端芝士树】浅拷贝、深拷贝以及Object.assign()的作用 首先还是得回到Javascript的基本数据类型。 值类型[深拷贝]:数值Num、布尔值Boolean、字符串String、null、undefined。 基本...

    ccj659 评论0 收藏0
  • 前端芝士】模拟虚拟DOM挂载

    摘要:前端芝士树虚拟挂载是如何实现的问题描述给出如下虚拟的数据结构,如何实现简单的虚拟,渲染到目标树样例数据渲染结果如下所示用实现 【前端芝士树】虚拟DOM挂载是如何实现的 问题描述 给出如下虚拟dom的数据结构,如何实现简单的虚拟dom,渲染到目标dom树 //样例数据 let demoNode = ({ tagName: ul, props: {class: list}, c...

    mist14 评论0 收藏0
  • 前端芝士】Javascript原型与原型链

    摘要:在创建对象不论是普通对象还是函数对象的时候,都有一个叫做的内置属性,用于指向创建它的构造函数的原型对象,也就是。因为一个普通对象的构造函数所以原型链原型链的形成是真正是靠而非。参考文章最详尽的原型与原型链终极详解,没有可能是。 【前端芝士树】Javascript的原型、原型链以及继承机制 前端的面试中经常会遇到这个问题,自己也是一直似懂非懂,趁这个机会整理一下 0. 为什么会出现原型和...

    yy736044583 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<