数组排序 sort() 方法 (映射对含有大小写的字符串进行排序)

这篇具有很好参考价值的文章主要介绍了数组排序 sort() 方法 (映射对含有大小写的字符串进行排序)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结论先行:

sort() 方法:用于对数组元素进行排序,默认升序。如果指明了参数,那数组会按照比较函数的返回值进行排序。  

sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。举例,a 和 b 两个将要被比较的元素:

如果 a-b 小于 0 ,那么 a 会被排列到 b 之前。

如果 a-b 等于 0 , a 和 b 的相对位置不变。

如果 a-b 大于 0 , b 会被排列到 a 之前。

简单的理解,就是: a-b升序      b-a 降序 

具体解析:

1、概念

sort() 是 JavaScript 中数组对象的一个方法,用于对数组元素进行排序。

会原地修改数组,将数组元素重新排列,并返回排序后的数组

默认情况下,sort() 方法将数组元素视为字符串并按照 Unicode 码点进行排序。

排序顺序可以是按字母或数字,也可以是升序(向上)或降序(向下)。默认情况下,sort() 方法将按字母和升序将值作为字符串进行排序。

2、语法

array.sort(compareFunction)

参数说明:

  • compareFunction(可选):用于指定排序顺序的比较函数。

如果不提供 compareFunction 参数,sort() 方法将按照字符串 Unicode 码点的顺序对数组元素进行排序。

3、参数详解

该函数应返回负值、零值或正值,具体取决于参数,例如:

function(a, b){ return a-b }

sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。

举例,a和b 两个将要被比较的元素:

如果 a-b 小于 0 ,那么 a 会被排列到 b 之前。

如果 a-b 等于 0 , a 和 b 的相对位置不变。

如果 a-b 大于 0 , b 会被排列到 a 之前。

简单的理解,就是: a-b升序         b-a 降序 

const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个示例中,我们提供了一个比较函数 (a, b) => a - b,它表示按照数字大小进行升序排序。因此,最终数组被排序成了 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

需要注意的是,sort() 方法会直接修改原始数组,并返回排序后的数组。如果需要保留原始数组,可以在排序前先创建一个副本进行操作。

4、应用

①  非数字排序:字母顺序

字符串排序,可以直接使用 sort() 方法

var fruits = ["Banana", "Orange", "Apple", "Mango", "Blueberries"];
fruits.sort(); // ["Apple", "Banana", "Blueberries", "Mango", "Orange"]
var arr = ['h','a','k','c','e'];
arr.sort();
console.log(arr)  // ["a", "c", "e", "h", "k"]

按字母顺序对数组进行排序,然后反转排序项的顺序(降序):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
console.log(fruits) //  ["Orange", "Mango", "Banana", "Apple"]
② 数字 

默认会将其作为字符串进行排序

var arr = [12, 22, 66, 3]
arr.sort()
console.log(arr) // [12, 22, 3, 66]
③ 按 升序 对数组中的数字进行排序:a-b
var points = [4, 10, 1, 5, 25, 10];
points.sort(function(a, b){ return a-b });

console.log(points) // [1, 4, 5, 10, 10, 25]
④ 按 降序 对数组中的数字进行排序:b-a
var points = [4, 10, 1, 5, 25, 10];
points.sort(function(a, b){ return b-a });

console.log(points) // [25, 10, 10, 5, 4, 1]
⑤ 获取数组中的最小值
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){ return a-b });    // 按升序对数组中的数字进行排序

// 数组中的第一项 (points[0]) 现在是最小值
⑥ 获取数组中的最大值
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){ return b-a });    // 按降序对数组中的数字进行排序

// 数组中的第一项 (points[0]) 现在是最大值
⑦ 根据对象的某个属性进行排序:
var arr = [
  { name: 'A', age: 21 },
  { name: 'B', age: 37 },
  { name: 'C', age: 18 },
  { name: 'D', age: -12 },
  { name: 'E', age: 15 },
  { name: 'F', age: 19 }
 ];

// 依据age排序
arr.sort(function(a, b) {
    return a.age - b.age
});
console.log(arr); // 0: {name: "D", age: -12}
                  // 1: {name: "E", age: 15}
                  // 2: {name: "C", age: 18}
                  // 3: {name: "F", age: 19}
                  // 4: {name: "A", age: 21}
                  // 5: {name: "B", age: 37}
// 依据name排序
arr.sort(function(a, b) {
    const nameA = a.name;
    const nameB = b.name;
    if(nameA < nameB) {
      return -1;
    }
    if(nameA > nameB) {
      return 1;
    }
    return 0;
});
console.log(arr); // 0: { name: 'A', age: 21 }
                  // 1: { name: 'B', age: 37 }
                  // 2: { name: 'C', age: 18 }
                  // 3: { name: 'D', age: -12 }
                  // 4: { name: 'E', age: 15 }
                  // 5: { name: 'F', age: 19 }
⑧ 非ASCII字符排序(如类似 e, é, è, a, ä 等字符的字符串)

一些非英语的字符串,需要使用 String.localeCompare

var a = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
a.sort(function (a, b) {
    return a.localeCompare(b);
});

console.log(a); // ["adieu", "café", "cliché", "communiqué", "premier", "réservé"]
⑨ 使用映射对含有大小写的字符串进行排序

方法一: 

// 需要被排序的数组
var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
 
// 对需要排序的数字和位置的临时存储
var mapped = list.map((item, index) => { 
    return { index, value: item.toLowerCase() }
})

console.log(mapped) // 0: {index: 0, value: "delta"}
                     // 1: {index: 1, value: "alpha"}
                     // 2: {index: 2, value: "charlie"}
                     // 3: 3: {index: 3, value: "bravo"}

// 按照多个值排序数组
mapped.sort((a, b) => {
    return +(a.value > b.value) || +(a.value === b.value) - 1;
});

console.log(mapped) // 0: {index: 1, value: "alpha"}
                    // 1: {index: 3, value: "bravo"}
                    // 2: {index: 2, value: "charlie"}
                    // 3: {index: 0, value: "delta"}

// 根据索引得到排序的结果
var result = mapped.map((el) => {
    return list[el.index];
});

console.log(result); // ["alpha", "bravo", "CHARLIE", "Delta"]

方法二:文章来源地址https://www.toymoban.com/news/detail-857140.html

// 需要被排序的数组
var list = ["Delta", "alpha", "CHARLIE", "bravo"];
let newObj = {};
list.forEach((item, index) => {
    newObj[(item.toLocaleLowerCase())] = item
});
console.log(newObj) 
// { alpha: "alpha", bravo: "bravo", charlie: "CHARLIE", delta: "Delta" }

let arr = Object.keys(newObj);
arr.sort((a, b) => {
    if (a < b) {
        return -1;
    } else if (a > b) {
        return 1;
    } else {
        return 0;
    }
});
console.log(arr); // ["alpha", "bravo", "charlie", "delta"]

let res = arr.map(item => item = newObj[item])
console.log(res) //  ["alpha", "bravo", "CHARLIE", "Delta"]

到了这里,关于数组排序 sort() 方法 (映射对含有大小写的字符串进行排序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • c语言大小写字母转换的三种方法 到 思考指针(超详细)

    目录 前言 总结摆在前面 1.指针思考的拓展 2.浅提一下表达式求值  三种方法 1.利用ASCII相差32 1.1以表达式求值的思考方式 1.2以指针的方式 2.通过按位异或来求(我觉得太巧合了,不推荐) 3.通过库函数(这个看你积累) 3.1  tolower函数——转换字符位小写 定义 参数 返回值

    2024年02月19日
    浏览(131)
  • 【蓝桥杯备赛Java组】语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

    🎥 个人主页:深鱼~ 🔥收录专栏:蓝桥杯 🌄欢迎 👍点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建  1.2 Java方法  1.3 输入输出  1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转换 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,

    2024年01月21日
    浏览(70)
  • 【工具】IDEA开发常用配置-编码设置、自动导包、类注释、方法注释、提示自动忽略大小写、自动换行、SQL格式、格式配置等

    1.1 编码设置 New Projects Settings- Settings for New Projects...-Editor-File Encodings 设置本项目和全局项目编码为 UTF-8 ;配置文件 properties 也需要设置为 UTF-8 ,需勾选 Transparent native-to-ascii conversion ,勾选之后配置文件中文能正常识别。 1.2 自动导包设置 New Projects Settings- Settings for New Proj

    2024年02月04日
    浏览(62)
  • 【蓝桥杯备赛Java组】第一章·语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

    🎥 个人主页:深鱼~ 🔥收录专栏:蓝桥杯 🌄欢迎 👍点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建  1.2 Java方法  1.3 输入输出  1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转换 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,

    2024年01月19日
    浏览(72)
  • java中字母、字符串,输入小写输出大写,输入大写输出小写、大小写转换

    思路: 1、利用“大小写字母之间正好相差32”这一特点                                                       2、用  toLowerCase()、toUpperCase() 字符串自带的方法  提示: Java中没有.nextChar()。 所以要读取char,我们使用  .next().charAt(0)  1、 输入小写输

    2024年02月07日
    浏览(90)
  • Python 大小写转换

    1.lower() 将字符串中的大写字母转换成小写字母 语法:str.lower() 2.upper() 将字符串的小写字母转换为大写字母 语法:str.upper() 3.capitalize() 将字符串的第一个字母变成大写,其余字母变为小写。 语法:str.capitalize()   4.title() 返回一个满足标题格式的字符串,即所有英文单词首字

    2024年02月13日
    浏览(71)
  • MySQL:区分大小写

    本文有点不准,仅作参考;可以使用MySQL的大小写相互转换,再拼接or来规避 查看MySQL版本 show variables;  1、查看 MySQL 当前的区分大小写设置: SHOW VARIABLES LIKE \\\'lower_case_table_names\\\'; 或者 show Variables like \\\'%table_names\\\' 2、更改大小写敏感设置: 在 MySQL 5.7 中,更改大小写敏感设置要

    2024年02月03日
    浏览(83)
  • 【ElasticSearch查询忽略大小写】

    ElasticSearch查询忽略大小写 1、常用文档类型(数据查询字段) 2、问题解决思路 2.1 查看当前索引下是否进行分词 在Kinaba中执行上述语句,结果如下: token 就是对应的分词后的结果(此处是我已经设置完了的,所以虽然存储之前是大写TEST,但是经过处理后存储的索引结果是小

    2024年02月03日
    浏览(62)
  • Git 忽略文件大小写

    ⏹ 遇到的情况 git提交文件的时候,默认是 不区分 大小写更改的, 这样会导致修改文件名大小写后,git提交不生效,导致代码运行失效。 也就是说默认情况下,在Git看来 SEB001.java 和 seb001.java 其实是一个文件 ⏹ 解决 使用如下命令行忽略大小写即可。 git config core.ignorecase

    2024年02月08日
    浏览(62)
  • hive查询区分大小写

    在Hive中,默认情况下,字段名是不区分大小写的,这意味着在查询中使用大写或小写字母来引用字段名称都是可以的。其实mysql也是一样的,大部分都不会区分大小写。 但是在部分业务场景时需要对这类数据进行处理,有这么几个方法可以尝试尝试。 启用此模式后,Hive将严

    2024年02月13日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包