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

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

zonemu1周前 (07-23)技术文章10

多方位熟悉数组处理方法

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

相关文章

据说是可以替代 Windows 的 5个 Linux 发行版

现如今有数以千计的 Linux 发行版可供您使用,然而人们却无法选择一个完美的操作系统来替代 Windows。 使用 Windows 时,傻瓜都能操作自如,同样的方法却不适用于 Linux。在这里,您...

Vue 2 和 Vue 3的区别(vue2和vue3的区别有哪些)

1.双向数据绑定原理不同Vue2 的双向数据绑定是利用ES5的一个APIObject.definePropert() 对数据进行劫持,结合发布订阅模式的方式来实现的。Vue3 中使用ES6的Proxy...

react hooks自定义组件居然能这样做

前言  这里写一下如何封装可复用组件。首先技术栈 react hooks + props-type + jsx封装纯函数组件。类组件和typeScript在这不做讨论,大家别白跑一趟。接下来会说一下封...

vue 3 学习笔记 (八)——provide 和 inject 用法及原理

在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传...

git的几种分支模式(git分支的概念)

编写代码,是软件开发交付过程的起点,发布上线,是开发工作完成的终点。代码分支模式贯穿了开发、集成和发布的整个过程,是工程师们最亲切的小伙伴。那如何根据自身的业务特点和团队规模来选择适合的分支模式呢?本...

10分钟搞定gitlab-ci自动化部署(gitlab ci 配置)

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。概述在编码完成时都会进行打包发布...