JS的办法sort默认设置是按什么方法排列的?

lxf2023-05-04 00:36:35

JS的办法sort默认设置是按什么方法排列的?

JS的办法sort默认设置是按什么方法排列的?

作为一位前端开发工程师,sort方式在大家的日常设计中频繁使用。sort方法是什么用于对二维数组进行筛选的,可是你是否知道sort方式默认设置是按什么方法排列的?下面就跟我一下去全面了解sort方法吧!

sort方式详细介绍

sort() 方式用于二维数组元素进行筛选。默认设置排列顺序是依据字符串数组Unicode码点。

在Unicode编码中,每一个标识符都有一个相对应的数字编号。这一序号称作“码点”(code point)。JavaScript内部结构,标识符以UTF-16格式贮存,每一个标识符固定不动为2个字符。对于一些必须4个字节数存放的普遍标识符,JavaScript用到2个双字节的方式表明他们。因而,JavaScript容许选用\uxxxx方式表明一个字符,在其中xxxx表明标识符的Unicode码点。

举例说明,'A'的码点是65,'B'的码点是66,因此依照Unicode码点排列,'B'排到'A'后边。

sort方式默认设置排序规则

了解到了sort方法是什么如何排序的,下面我们就会来研究sort方式的默认设置排序规则。

数字排序

最先,大家看一下数的排列状况:

const arr = [38, 5, 7, 11];
arr.sort(); // [11, 38, 5, 7]

针对数字排序,sort方式默认设置将数组元素转换成字符串,然后依照Unicode码点进行筛选。因而,依照默认设置标准5排到38最前面。

那如果他们想要依照数字大小进行筛选呢?可以用以下措施来达到:

const arr = [38, 5, 7, 11];
arr.sort((a, b) => a - b); // [5, 7, 11, 38]

根据传到一个比较函数,大家能够改变sort方式的默认设置个人行为。

字符串排序

下面,大家看一下字符串数组的排列状况:

const arr = ['banana', 'apple', 'Orange', 'grape'];
arr.sort(); // ["Orange", "apple", "banana", "grape"]

我们不难发现英文大写字母一直排到小写最前面。这是因为依照Unicode码点排列所导致的。由于英文大写字母的码点要比小写的码点小,因此英文大写字母排到小写以前。

那如果他们想要不区分大小写地进行筛选呢?可以用以下措施来达到:

const arr = ['banana', 'apple', 'Orange', 'grape'];
arr.sort((a, b) => {
  return a.toLowerCase().localeCompare(b.toLowerCase());
}); // ["apple", "banana", "grape", "Orange"]

可以将字符串数组都转化为小写再进行筛选,就可以忽视英文大小写的差别。

目标排列

与数字和字符串数组不一样,目标排列是无法直接所进行的。由于2个目标之间有没法比较大小的。可是能通过制订比较函数进行筛选。看一下怎样对目标进行筛选:

const arr = [
    { name: "Tom", age: 20 },
    { name: "Jerry", age: 10},
    { name: "Herry", age: 17 }
];
arr.sort((a, b) => a.age - b.age);
/*
  [
    { name: "Jerry", age: 10},
    { name: "Herry", age: 17 },
    { name: "Tom", age: 20 }
  ]
*/

能够适用对象的某一个特性来进行筛选,例如上边的表现是依照年龄多大进行筛选。

汇总

以上就是关于sort方式默认设置排序规则的相关介绍。我们都知道,在JavaScript中,sort方式的默认设置排序规则是依据Unicode码点进行筛选。针对数据、字符串数组、目标等不同种类的数据信息,都能通过制订比较函数来调节默认排序规则。

在我们要进行数组排序时,一定要注意sort方式的默认设置排序规则,以免发生不正确结论。与此同时,依据实际需求制订适度的比较函数极大的提高了研发效率和程序性能

期待文中可以对大伙儿掌握JavaScript中sort方式的默认设置排序规则有一定的帮助,并且能在具体设计中游刃有余。

额外具体内容

sort方式是不是更改原二维数组?

sort方式可以改变初始二维数组,不会建立一个新的二维数组。因而应用sort方式以前,建议还是开展二维数组备份数据,不然就会造成原二维数组被改动。

const arr = [2, 1, 3];
const sortedArr = arr.sort(); // [1, 2, 3]
console.log(arr); // [1, 2, 3]
console.log(sortedArr); // [1, 2, 3]

sort方式在对待非ASCII标识符后的难题

因为JavaScript的字符串数组都是基于Unicode编码的,因而sort方式也是按照Unicode码点进行筛选的。可是,在对待非ASCII标识符时有可能出现难题。

比如,针对中文汉字,在Unicode编码中占有4个字节数。可是,如果把中国汉字字符串数组传到sort方式,sort方式内部结构只能视之为单独标识符予以处理,因而也会得到不正确的排列结论。

为了防止这种情况,可以用localeCompare方式取代sort方式。此方法不但适用中国汉字等其他ASCII标识符的排列,还可以根据不同地域语言表达开展当然排列,并实现更准确和适宜的排列实际效果。

sort方法和可靠性的关联

平稳排列就是指当排列原素拥有相同值后,它在排完序后相对位置保持一致。sort方式默认设置并不是稳定的排序优化算法,可是能通过制订自定比较函数来达到可靠性。

比如,下列编码就可以使用一个自定比较函数来对数组元素开展平稳排列:

const arr = [4, 2, 5, 1, 3];
arr.sort((a, b) => {
   if (a === b) {
       return 0;
   } else {
       return a < b ? -1 : 1;
   }
}); // [1, 2, 3, 4, 5]

结束语

文中阐述了JavaScript中sort方式的默认设置排序规则,如何更好地依据实际需要制订自定比较函数。并且也讲的是sort方式是不是更改初始二维数组、怎样处理非ASCII标识符、快速排序算法的稳定等内容。期待文中可以对大伙儿掌握sort方式有一定的帮助,感谢!

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!