无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(js中的sort函数) js中.sort()函数的常见用法与高级操作 JavaScriptsort()函数:从简单到复杂的排序逻辑 全网首发(图文详解1)

前沿技术 Micheal 7个月前 (06-11) 82次浏览 已收录 扫描二维码

(js中的sort函数) js中.sort()函数的常见用法与高级操作

JavaScript中的.sort()函数是一个非常强大的工具,它可以让你根据自己的规则对数组中的元素进行排序。默认情况下,sort()会将数组中的元素转换为字符串,并按照字母顺序进行排序。但是通过提供一个排序函数作为参数,你可以执行更复杂的排序逻辑。

基础用法

字符串数组排序

let fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // 结果: ["Apple", "Banana", "Mango", "Orange"]

数字数组排序(默认排序错误)

let scores = [40, 100, 1, 5, 25, 10];
scores.sort(); // 默认排序会出错,因为它把数字转换成了字符串进行比较

解决数字排序问题

为了正确排序数字,我们需要提供一个比较函数:

let scores = [40, 100, 1, 5, 25, 10];
scores.sort(function(a, b) {
  return a - b; // 升序
});
// 或者使用箭头函数
scores.sort((a, b) => a - b);

这样就可以按照数字的大小进行排序了。

高级操作

有时候我们需要根据对象的某个属性来排序数组。

对象数组排序

假设我们有以下用户数组,我们希望根据用户的年龄进行排序:

let users = [
  { name: "John", age: 25 },
  { name: "Amy", age: 20 },
  { name: "cameron", age: 30 },
];

users.sort(function(a, b) {
  return a.age - b.age;
});

逆序排序

如果你想要逆序排序,只需要改变比较函数中的返回值:

users.sort(function(a, b) {
  return b.age - a.age; // 现在是按年龄降序排列
});

复杂逻辑排序

有时候,排序条件可能会更加复杂。比如,如果要先按年龄排序,年龄相同再按名称排序,你可以这样做:

users.sort(function (a, b) {
  // 首先按年龄排序
  const ageDifference = a.age - b.age;
  if (ageDifference !== 0) {
    return ageDifference;
  }
  // 如果年龄相同,按名字排序
  const nameA = a.name.toUpperCase(); // 大小写不敏感
  const nameB = b.name.toUpperCase();
  if (nameA < nameB) {
    return -1;
  }
  if (nameA > nameB) {
    return 1;
  }
  return 0; // 名字完全相同时
});

通过这样的方式,你可以实现非常灵活和强大的排序逻辑,以适应各种复杂的应用场景。
(java18下载) JDK18 (Java SE Development Kit 18) for Mac v18.0.2 x64 官方苹果电脑版 Oracle JDK18 安装指南 全网首发(图文详解1)
(nvidia container) Win10提示nvidia container占用CPU高怎么修复? 解决Nvidia Container占用CPU高的方法:NVIDIA驱动程序问题处理 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝