数组去重和排序(数组去重有哪些方法)
导语:数组处理去重+排序
多方位熟悉数组处理方法
已知如下数组,编写一个程序将数组扁平化去并除其中重复部分数据,最终得 到一个升序且不重复的数组 var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
解答
1.先去扁平化
2.数组去重
3.排序
第一步拉平数组
// 扁平化
let flatArr = arr.flat(4);
console.log(flatArr, );
//[1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]
es6之数组的flat()方法
[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]
[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]
flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
flat()的参数为2,表示要拉平两层的嵌套数组。
第二步去重
// 去重
let disArr = Array.from(new Set(flatArr));
console.log(disArr, );
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 10]
数组去重方法比较多set()方法相对最快速
let a=[1,2,4,2,3,1,2,2]
let c=new Set(a);
console.log(c);//Set(4) {1, 2, 4, 3}
最后一步排序
// 排序
let result = disArr.sort(function (a, b) {
return a - b;
});
console.log(result);
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
sort() 方法用于对数组的元素进行排序。
function sortNumber(a, b){
return a - b; //这里返回的是他们的差值,如果是大于0的值,就会将b排在前面,如果小于0,
就会将a排在前面,如果是0的话,就随便。(冒泡排序法!!)
}
解决方案:
快速处理:
Array.from(new Set(arr.flat(Infinity))).sort((a,b)=>{ return a-b})
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
本文内容由小开整理编辑!