JavaScript数组去重,大小排序的两种方法

方法有很多种,本文列举其中两种

声明一个数组

javascript 复制代码
  var arr = [5,4,3,2,1,5,3];

数组去重

1:利用ES6中的 Set 方法去重(最常用)

原理:

Set数据结构中所有元素都是唯一的,没有重复

Set 本身是一个构造函数,用来生成 Set 数据结构

javascript 复制代码
// new Set(arr) 得到一个去重的set对象
// 通过 [] + 展开运算符 变成数组格式
console.log([...new Set(arr)]);

2:利用indexOf去重

原理:

indexof() 可返回某个指定的字符串值在字符串中首次出现的位置。如果没有检索到指定字符串,则返回-1

javascript 复制代码
let newArr = [];
for (let i = 0; i < arr.length; i++) {
    // 检索新数组中是否有重复元素,没有就push进新数组
    if (newArr.indexOf(arr[i]) === -1)
        newArr.push(arr[i]);
}
console.log(newArr);

数组从大到小排序
1:sort方法

概念:

sort() 方法用于对数组的元素进行排序。

排序顺序可以是字母或数字,并按升序或降序。

默认排序顺序为按字母升序。

注意:当数字是按字母顺序排列时"40"将排在"5"前面。

使用数字排序,你必须通过一个函数作为参数来调用。

函数指定数字是按照升序还是降序排列。

注意: 这种方法会改变原始数组!。

javascript 复制代码
// 数组排序 sort
console.log(arr.sort(sort_s),'这是升序');
console.log(arr.sort(sort_j),'这是降序');

// 升序
function sort_s(a,b){
    return a-b;
}

// 降序
function sort_j(a,b){
    return b-a;
}

2:冒泡排序

原理:

每次对相邻的两个元素进行比较,若前者大于后者则进行交换,

如此一趟下来最后一趟的就是最大元素,重复以上的步骤,除了已经确定的元素。

javascript 复制代码
 for(var i = 0; i < arr.length-1; i++){  //外层循环管趟数 
        for(var j = 0; j < arr.length-i-1; j++){
            if(arr[j] < arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }  
    console.log(arr);
相关推荐
z落落12 小时前
C# 泛型方法(原理、类型推断、多泛型参数)+泛型效率(普通类型 VS Object装箱 VS 泛型)
开发语言·c#
L_090712 小时前
【C++】异常
开发语言·c++
疯狂SQL13 小时前
JWT 在线解码、验签、生成一篇讲透:附前端实现、工具架构与在线体验地址
javascript·jwt·编解码·jwt测试
前端一小卒13 小时前
不手写代码的第 30 天,我才明白前端这个岗位还剩什么
前端·javascript·ai编程
Ajie'Blog13 小时前
Copilot Agent Tasks API 开放:AI 编程开始进入后台任务时代
服务器·前端·javascript·人工智能·copilot·ai编程
世辰辰辰13 小时前
批量修改图片/文本名子
开发语言·python·批量修改文件名
老毛肚13 小时前
jeecgboot vue TS & 模板化 04
前端·javascript·vue.js
晓131314 小时前
【Cocos Creator 2.x】篇——第二章 入门
javascript·游戏引擎
z落落15 小时前
C# 四种特殊类:抽象类、密封类、静态类、部分类
开发语言·c#
Electrolux15 小时前
[onlyoffice-v9]纯前端怎么实现编辑预览office
前端·javascript·github