首页 > 其他分享 >es6 flat 将数组降维方法

es6 flat 将数组降维方法

时间:2024-11-06 14:46:10浏览次数:1  
标签:es6 arr 降维 flat 拉平 嵌套 数组 深度

flat() 是 JavaScript 中的一个数组方法,用于将嵌套的数组“拉平”成一个新数组。该方法会递归地“降维”数组,直到指定的深度。

语法:

arr.flat(depth);
  • depth:可选,表示嵌套数组的“深度”。默认为 1。传入一个更大的值,数组会被拉平更多层级。如果传入 Infinity,则会将所有嵌套的数组完全拉平。

示例:

1. 默认深度 1

let arr = [1, [2, 3], [4, [5, 6]]];
console.log(arr.flat()); // 输出: [1, 2, 3, 4, [5, 6]]
  • 这里,flat() 会将数组中嵌套的一级数组拉平,但不影响更深层的数组。

2. 设置自定义深度

let arr = [1, [2, 3], [4, [5, 6]]];
console.log(arr.flat(2)); // 输出: [1, 2, 3, 4, 5, 6]
  • 在这个例子中,flat(2) 会将数组拉平到深度为 2,因此嵌套的数组 [5, 6] 被完全展开。

3. 使用 Infinity 深度

let arr = [1, [2, [3, [4, 5]]]];
console.log(arr.flat(Infinity)); // 输出: [1, 2, 3, 4, 5]
  • 使用 Infinity 可以将数组完全拉平,无论数组有多少层嵌套。

4. 对空数组的处理

let arr = [1, 2, [], 3];
console.log(arr.flat()); // 输出: [1, 2, 3]
  • flat() 会自动移除空数组([])。

特点:

  • 不修改原数组flat() 返回一个新数组,原数组不受影响。
  • 拉平多维数组:通过设置深度,可以根据需要拉平多维数组。

使用场景:

  • 处理嵌套数组:当你有一个嵌套结构复杂的数组时,flat() 可以快速将其降维,简化后续的操作。
  • 清理空数组或空项:可以用 flat() 去除数组中的空项,获得更干净的数组。

总结:

flat() 是一个强大的方法,适用于处理嵌套数组,它简化了数组的深度操作,避免了手动循环和展开数组的复杂度。

标签:es6,arr,降维,flat,拉平,嵌套,数组,深度
From: https://www.cnblogs.com/pansidong/p/18530204

相关文章

  • JS-ES6标准
    JS-ES6标准箭头函数更简洁的语法:箭头函数允许你不使用function关键字来定义函数。隐式的return:如果箭头函数的函数体只有一个表达式,那么这个表达式的值会被隐式返回,不需要return关键字。不绑定自己的this:箭头函数不会创建自己的this上下文,this值由外围最近一层非箭头函数决定......
  • es6 语法学习 - 解释器模式
    es6语法学习-解释器模式一、基本概念解释器设计模式(InterpreterPattern)是一种行为型设计模式,它用于将一种特定的语言或表达式转换为对象,并通过解释器来解释和执行这些对象。二、优点扩展性好:由于语法由很多类表示,因此容易改变及扩展语言。灵活性高:可以根据不同的规......
  • ES6 Class
    1.setter&getter//ES6ClassclassPersonCl{constructor(fullName,birthYear){this.fullName=fullName;this.birthYear=birthYear;}//类里面的方法可以直接写在里面//下面的方法都是实例方法,所有构造函数创建的实例都可以调用它们calcAge......
  • Scifi Modern flat themed GUI UI kit - over 700 PNG files PSD AI sources
    一款完整的现代主题UI套件,专为科幻游戏和应用设计。主要特点包括:六种颜色主题的窗口,涵盖暂停、设置、商店、库存、任务等多个功能页面。提供138个独特的项目和图标,支持5种尺寸(32x32至512x512像素)。丰富的按钮类型,包括常规按钮、轮廓按钮、带图标按钮等,每种按钮有2-3......
  • webpack打包js代码(ES6->ES5)和vue文件
    为什么需要babel?Babel命令行使用Babel插件的使用Babel的预设presetbabel-loaderbabel-preset编写App.vue代码App.vue的打包过程@vue/compiler-sfcresolve模块解析确实文件还是文件夹extensions和alias配置......
  • 深度解析机器学习的四大核心功能:分类、回归、聚类与降维
    深度解析机器学习的四大核心功能:分类、回归、聚类与降维前言分类(Classification):预测离散标签的艺术关键算法与代码示例逻辑回归支持向量机(SVM)回归(Regression):预测连续值的科学关键算法与代码示例线性回归岭回归(RidgeRegression)聚类(Clustering):无监督学习中的分组专家......
  • ES6中的Set数据结构的常用方法和使用场景
    ES6中的Set数据结构Set是ES6中新增的数据结构,用于存储不重复的值,允许存储任何类型的唯一值。Set的核心特点是值唯一性,类似数学中的集合。常用方法1.add(value)添加值到Set中,如果值已存在则不会添加。constset=newSet();set.add(1);//Set{1}2.delete(v......
  • ES6-模块化
    介绍模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。模块化的好处防止命名冲突代码复用高维护性ES6之前的模块化规范有CommonJS=>NodeJS、BrowserifyAMD=>requireJSCMD=>seaJSES6模块化语法模块功能主要由两个命令构成:export和im......
  • ES6-Class
    class类ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。知识点:......
  • ES6-变量、常量(let、const)
    变量声明//声明变量leta;letb,c,d;lete=100;letf=521,g='iloveyou',h=[];//1.变量不能重复声明//letstar='罗志祥';//letstar='小猪';//2.块儿级作用域全局,函数,eval//ifelsewhilefor//{//letgirl='周扬青';......