素材巴巴 > 程序开发 >

JS算法——数组扁平化去重排序

程序开发 2023-09-04 09:01:37

一、问题描述

已知如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10],

编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组

二、代码实现

不管用什么方式,都是将数组拍平,去重,排序。

非ES6实现方式

数组拍平

let flatArr = arr.toString().split(",");

数组去重

const arrMap = {};for (let i = 0, len = flatArr.length; i < len; i++) {arrMap[flatArr[i]] = "RD"
 }flatArr = []for (let i in arrMap) {flatArr.push(+i)
 }

数组排序

flatArr = flatArr.sort(function (a, b) {return a - b
 })

完整代码

const arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]let flatArr = arr.toString().split(",") //拍平const arrMap = {};for (let i = 0, len = flatArr.length; i < len; i++) {arrMap[flatArr[i]] = "RD"
 }flatArr = []for (let i in arrMap) {flatArr.push(+i)
 } //去重flatArr = flatArr.sort(function (a, b) {return a - b
 }) //排序console.log(flatArr)


ES6实现方式

数组拍平

let flatArr = arr.flat(Infinity)

数组去重

let RDArr = Array.from(new Set(flatArr))

数组排序

let sortArr = RDArr.sort(function (a, b) {return a - b
 })

完整代码

const arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]/**
 * @description: 数组扁平化去重
 * @param arr
 * @return Array
 */
 function getFlatRDSort(arr) {return Array.from(new Set(arr.flat(Infinity))).sort((a, b) => { return a - b })
 }console.log(getFlatRDSort(arr));


标签:

上一篇: Javascript window.open使用POST传递值 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。