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传递值
下一篇:
相关文章
-
无相关信息