原生JS之sort排序方法详解

这篇具有很好参考价值的文章主要介绍了原生JS之sort排序方法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在JavaScript中排序主要用到的api就是sort了,但是使用sort有几个坑需要注意,让我们一起来看看

排序原理-不使用参数时

sort() 方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。

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

在不使用参数时,sort使用的是字典排序

如果数组中元素都是字符串,这点很好理解,比如:

var arr= new Array(); //创建一个空数组
arr= ['sun','xu','ma','he','wang','zhang'];
arr.sort(); //调用sort方法 

输出结果为:

he
ma
sun
wang
xu
zhang 

但是如果是数字呢?让我们来看看:

var a = new Array();
a = [1,10,100,5,25,99];
a.sort(); 

输出结果为:

1
10
100
25
5
99 

令人费解。。。但其实如果知道其原理就很容易理解,sort默认是按照字典顺序排序的;

字典序

字典序(dictionary order),又称 字母序(alphabetical order),原意是表示英文单词在字典中的先后顺序,在计算机领域中扩展成两个任意字符串的大小关系。

英文中的 字母表(Alphabet) 按照如下的顺序排列:

ABCDEFG HIJKLMN OPQRST UVWXYZ

abcdefg hijklmn opqrst uvwxyz

在字典中,单词是按照首字母在字母表中的顺序进行排列的,比如 alpha 在 beta 之前。而第一个字母相同时,会去比较两个单词的第二个字母在字母表中的顺序,比如 account 在 advanced 之前,以此类推。下列单词就是按照字典序进行排列的:

as

aster

astrolabe

astronomy

at

ataman

attack

baa

在计算机领域中,这个字典序就不仅仅用来比较英文单词了,而是比较任意字符串。对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。比如ah1x小于ahb,Z5小于a3,10小于101等

排序原理-使用参数

在大多数情况下,我们需要将数组中的数字按大小排序,就必须使用一个函数

使用数字排序,你必须通过一个函数作为参数来调用;函数指定数字是按照升序还是降序排列

// 数组排序 sort

let arr=[1,8,2,6,9,12,64,86,3,5,4,9,4]
console.log('-------------------------这是升序--------------------');
console.log(arr.sort(sort_s));
console.log('-------------------------这是降序--------------------');
console.log(arr.sort(sort_j));

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

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

输出结果为:

原生JS之sort排序方法详解

注意事项

这种方法会改变原始数组! 这种方法会改变原始数组!这种方法会改变原始数组!重要的事情说三遍,排完后会直接影响原数组,并且元素不会进行复制,也就是说,sort()的返回值为原数组的引用,例如:

let arr=new Array()
arr=[2,4,1,8,5,3]
let arrt=arr.sort((a,b)=>a-b)
console.log(arr===arrt)//true 

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。
原生JS之sort排序方法详解
原生JS之sort排序方法详解
原生JS之sort排序方法详解
原生JS之sort排序方法详解

有需要的小伙伴,可以点击下方卡片领取,无偿分享文章来源地址https://www.toymoban.com/news/detail-439080.html

到了这里,关于原生JS之sort排序方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ## 解析Arrays.sort()方法 排序问题

    首先,Arrays.sort() 需要传入两个参数。 第一个参数是需要排序的数组,但是该数组不能是基本数据类型,必须是引用数据类型。 第二个参数是一个接口,所以我们在调用方式的时候,需要传递这个接口的实现类对象,这个实现类可以用匿名内部类的方式实现。 底层原理分析

    2024年02月03日
    浏览(40)
  • [排序算法]:归并排序(Merge Sort)(递归与非递归实现详解)

            归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。

    2024年01月20日
    浏览(37)
  • 【云原生技术】JavaScript在云计算中常用的一些框架,以及它们对应的应用类型和主要用途

    在云计算中,JavaScript语言主要用于前端Web开发和服务器端应用程序开发。以下是JavaScript在云计算中常用的一些框架,以及它们对应的应用类型和主要用途,按照您提供的格式进行详细介绍: 1. 前端框架: 框架: React, Angular, Vue.js 应用类型: 普通应用:前端框架如React、An

    2024年01月21日
    浏览(40)
  • java中的Arrays.sort()排序方法

    目录 一、方法重载 二、注意事项  三、举例 (1)对于基本数据类型的数组,排序时会按照升序排序; (2)对对象数组进行排序 Java中的 Arrays.sort() 方法是一种内置的排序方法,用于对数组进行排序。这是一个来自 java.util.Arrays 类的静态方法,用于对所有的基本数据类型对

    2024年02月08日
    浏览(44)
  • Leetcode 56. 合并区间(排序 + sort 方法的注意)

    Leetcode 56. 合并区间(排序 + sort 方法的注意) 题目 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。 请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 1 = intervals.length = 10^4 intervals[i].length ==

    2024年02月10日
    浏览(40)
  • JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

    目录 前言: 一维数组降序: 方法1.Comparator接口: 代码实现: 方法2.Collections.reverseOrder(): 代码实现:  二维数组排序: 代码如下: List排序: 代码如下: 自定义类型比较排序: 按照年龄逆序排序: 按照姓名升序排序: lambada表达式简写: 一维数组逆序代码: 二维数组排

    2024年04月09日
    浏览(42)
  • 数组排序 sort() 方法 (映射对含有大小写的字符串进行排序)

    结论先行: sort() 方法: 用于对数组元素进行 排序 ,默认升序。如果指明了参数,那数组会按照 比较函数 的返回值进行排序。    sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。 举例,a 和 b 两个将要被比较的元素: 如果 a-

    2024年04月25日
    浏览(24)
  • JDK8 中Arrays.sort() 排序方法解读

    一、引言 在刷算法的时候经常需要对 数组 进行排序,第一反应就是直接使用java.util包下的Arrays.sort()方法直接排序。但在刷算法时会通过 时间复杂度 和 空间复杂度 对实现的算法进行评价,因此我们需对Arrays.sort()方法有所了解。 本文先行介绍Arrays.sort()中影响排序方式的几

    2024年02月02日
    浏览(51)
  • js sort方法指南

    本文将详细介绍如何使用 sort 方法对数组中的原始数据和对象进行排序: js 提供了一个排序方法 sort 可以对数组进行就地排序(意味着不进行复制)并返回排序后的数组。我们可以通过传递对比函数来修改内部的数组元素的顺序,但是不能修改 sort 方法所使用的算法。 使用

    2024年02月16日
    浏览(20)
  • 使用Java的stream().sorted方法对集合进行排序

    Java Stream API 提供了丰富的方法来对流中的元素进行处理和操作。其中, sorted() 方法用于对流中的元素进行排序。本文将深入探讨 sorted() 方法的用法、示例代码以及详细解释,以帮助您更好地理解和使用这个方法。 StreamT sorted() : 这个方法用于对流中的元素进行自然排序。要

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包