当前位置:首页 > 技术文章 > 正文内容

数组处理去重+排序(数组去重并排序)

zonemu3个月前 (07-23)技术文章39

多方位熟悉数组处理方法

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

相关文章

7 款最佳 Linux 桌面发行版,颜值天花板

一、elementary OS二、Deepin三、Pop!_OS四、Manjaro Linux五、KDE Neon六、Zorin OS七、Nitrux OS想必大家都知道三大常用操作系统:Linux、...

迁移GIT仓库并带有历史提交记录(git 迁移仓库)

迁移git仓库开发在很多时候,会遇到一个问题。GIT仓库的管理,特别是仓库的迁移。我需要保留已有的历史记录,而不是重新开发,重头再来。我们可以这样做:使用--mirror模式会把本地的分支都克隆。//...

如何使用HTML5实现多个元素的拖放功能

通过使用HTML5的拖放功能我们可以拖放HTML页面元素。在上一篇文章中,我们介绍了有关于可以拖放单个元素的代码。在接下来的这篇文章中,我们将来介绍关于允许拖放多个元素的代码。话不多说,我们直接看示例...

小白友好型Windows优化工具BoosterX使用教程 一键提升游戏性能

一款集系统优化和游戏优化为一体的Windows友好型优化工具,BoosterX得到过众多游戏玩家的推荐,它能简单、快速、安全地优化Windows,就算设置出错还能通过备份还原设置。它还提供了一款精简版...

面试官-如何实现数组和 List 之间的转换?

数组和List是Java开发中常见的两种数据结构,那么如何实现二者之间的快速转换就成了面试官常问的考点之一,下面我们我们就来从数组转List和List转数组两个方面来展开介绍一下。数组转List方法...

渗透测试基础入门:文件上传漏洞之文件名过滤绕过

昨天安仔跟大家分享了文件上传漏洞中的前端JS绕过,今天继续分享文件名过滤绕过。绕过原理:JS验证代码通过黑名单的方式来判断允许上传文件的类型,这个时候攻击者就可以通过上传黑名单之外的文件类型来绕过验证...