IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 数组扁平化的5种方法 -> 正文阅读

[JavaScript知识库]数组扁平化的5种方法

编写一个程序实现数组的扁平化,去重重复项,最终得到一个升序且不重复的数组

注:

  1. 扁平化:arr.flat(Infinity)
  2. 去重:[...new Set(arr)] ???Array.from(new Set(arr))
  3. 排序:sort()
let?arr =?[1, 2, 3, 45, 58, [154, 25, 14, 14, [4587, 45, 125, [145, 20, 145, 23, [12, 10]]]]]
  1. 使用ES6中提供的Array.prototype.flat(Infinity)
let?arr =?[1, 2, 3, 45, 58, [154, 25, 14, 14, [4587, 45, 125, [145, 20, 145, 23, [12, 10]]]]]

arr =?Array.from(new?Set(arr.flat(Infinity))).sort((a, b) =>?a -?b)

console.log(arr)
  1. 利用tostring()方法把数组直接变为字符即可实现扁平化处理再进行去重排序

注:通过toString()处理后不管又多少级,最后都会变成以逗号分隔的字符串,没有了中括号和所谓的层级,相当于直接扁平化处理了

  1. arr.tostring() ????//把多维数组直接变成字符串
  2. arr.tostring().split(‘,’) ???// 用逗号隔开
  3. arr.map(item=>{return Number(item)}) ??// 通过map的方法把字符串转为数字
let?arr =?[1, 2, 3, 45, 58, [154, 25, 14, 14, [4587, 45, 125, [145, 20, 145, 23, [12, 10]]]]]

arr =?arr.toString().split(',').map(item =>?{ return?Number(item) })
  1. JSON.stringify(arr)(把json格式的对象转为json格式的字符串)

注:

  1. 通过JSON.stringfy(arr) ?将json格式对象转换为json格式字符串
  2. 通过replace()方法把“[]”转换为空(replace(/(\[|\])/g,’’))
  3. 通过split(‘,’)用逗号将字符串拆分为数组
  4. 通过map()和Number()方法将数组中每一项遍历转换为数字
  5. 通过sort()方法排序
let?arr =?[1, 2, 3, 45, 58, [154, 25, 14, 14, [4587, 45, 125, [145, 20, 145, 23, [12, 10]]]]]

arr =?JSON.stringify(arr).replace(/(\[|\])/g, '').split(',').map(item =>?{ return?Number(item) }).sort((a, b) =>?{ return?a -?b })
  1. ?用some()+ While() +concat() 循环

注:some()方法进行判断检验数组中的某一项有没有符合函数中提供规则的 ?返回true或者false

Some和find的区别: some 返回的是Boolean ,find 找到符合规则的,返回当前这一项,找到一项就不在找,没找到符合规则的返回undefined

let?arr =?[1, 2, 3, 45, 58, [154, 25, 14, 14, [4587, 45, 125, [145, 20, 145, 23, [12, 10]]]]]

while?(arr.some(item =>?{ return?Array.isArray(item) })) {

arr =?[].concat(...arr)

}
  1. 递归
let?arr =?[1, 2, 3, 45, 58, [154, 25, 14, 14, [4587, 45, 125, [145, 20, 145, 23, [12, 10]]]]]

~function?() {

function?myFlat() {

let?result =?[],

_this =?this;

//循环arr中的每一项,把不是数组的存到result新数组中

let?fn?=?(arr) =>?{

for?(let?item of?arr) {

if?(Array.isArray(item)) {

fn(item);

continue;

}

result.push(item)

}

}



fn(_this);

return?result;

}

Array.prototype.myFlat?=?myFlat

}();

arr =?arr.myFlat();

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 10:43:24  更:2021-09-05 10:45:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:37:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码