搜索
写经验 领红包
 > 游戏

数组去重和排序(数组去重有哪些方法)

导语:数组处理去重+排序

数组去重和排序(数组去重有哪些方法)

多方位熟悉数组处理方法

已知如下数组,编写一个程序将数组扁平化去并除其中重复部分数据,最终得 到一个升序且不重复的数组 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]

本文内容由小开整理编辑!