当前位置: 首页 > news >正文

Javascript数组排序

1. JavaScript 数组排序基础

JavaScript 的 Array.sort() 方法用于对数组元素进行排序。它接受一个可选的比较函数作为参数:

array.sort([compareFunction])

比较函数的规则:

  • 如果返回负数,表示 a 排在 b 前面
  • 如果返回正数,表示 b 排在 a 前面
  • 如果返回 0,表示 a 和 b 的位置不变

2. 常见排序示例

  1. 数字升序排序:
const numbers = [3, 1, 4, 1, 5];
numbers.sort((a, b) => a - b);
// 结果: [1, 1, 3, 4, 5]
  1. 数字降序排序:
const numbers = [3, 1, 4, 1, 5];
numbers.sort((a, b) => b - a);
// 结果: [5, 4, 3, 1, 1]
  1. 对象数组按属性排序:
const items = [
  { name: '张三', age: 30 },
  { name: '李四', age: 24 },
  { name: '王五', age: 28 }
];

// 按年龄升序
items.sort((a, b) => a.age - b.age);

// 按名字字母顺序
items.sort((a, b) => a.name.localeCompare(b.name));
  1. 多条件排序:
const items = [
  { type: 'A', value: 10 },
  { type: 'B', value: 5 },
  { type: 'A', value: 8 }
];

items.sort((a, b) => {
  if (a.type !== b.type) {
    return a.type.localeCompare(b.type); // 先按 type 排序
  }
  return a.value - b.value; // type 相同时按 value 排序
});

3. 性能注意事项

  1. sort() 方法会直接修改原数组。如果不想修改原数组,可以先创建副本:
const sortedArray = [...originalArray].sort((a, b) => a - b);
  1. 对于大数据量的排序,考虑使用其他排序算法或数据结构可能更合适。

  2. 如果需要保持原有顺序中相等元素的相对位置,应该使用稳定排序算法。

4.基本特征比较

特征JavaScriptPythonJava
内置排序方法sort()sort()/sorted()Arrays.sort()
是否修改原数组sort()是,sorted()
默认排序规则按字符串顺序数字按大小,字符串按字典序数字按大小,字符串按字典序
自定义比较器语法箭头函数/比较函数key函数/cmp_to_keyComparator接口
空值处理排在末尾抛出异常抛出异常
排序算法TimSort/QuickSortTimSortTimSort/QuickSort
排序稳定性不保证稳定稳定基本类型不保证,对象数组稳定

5.语法特点比较

语言升序排序降序排序对象数组排序
JavaScriptarr.sort((a,b) => a-b)arr.sort((a,b) => b-a)arr.sort((a,b) => a.prop - b.prop)
Pythonlist.sort()sorted(list)list.sort(reverse=True)list.sort(key=lambda x: x.prop)
JavaArrays.sort(arr)Arrays.sort(arr, Collections.reverseOrder())Arrays.sort(arr, Comparator.comparing(obj::getProp))

相关文章:

  • Golang深度学习
  • WPF的页面设计和实用功能实现
  • C#调用126邮箱发送邮件及注意事项,(完整源代码)下载
  • 每日一题——字符串变形
  • 如何生成美观且内容稳定的PDF文档:从基础到进阶的全方案解析
  • Datawhale Ollama教程笔记5
  • Rust编程语言入门教程 (七)函数与控制流
  • 什么是LoRA微调
  • SpringBoot详解
  • 使用爬虫按关键字搜索亚马逊商品:实战指南
  • AWS-SAA中文版题库
  • 【c语言初阶】函数_递归和迭代
  • 计算机专业知识【深入理解 IP 地址与子网掩码:从 /27 到不同 CIDR 表示】
  • PyTorch 源码学习:Dispatch Autograd Operators
  • 《炒股养家心法.pdf》 kimi总结
  • 京东cfe滑块 分析
  • 在VSCode中接入deepseek
  • 优化YOLOv8:如何利用ODConv卷积解决复杂背景下的目标识别问题
  • 为什么要用 const 和 let,而不是 var?
  • Solon Cloud —— 介绍
  • 阳泉那有做网站的/企业网站怎么注册官网
  • 南充建网站的资料/免费网站电视剧全免费
  • 网站 公安 备案/关键词诊断优化全部关键词
  • 网站开发实践实验报告/建站 seo课程
  • 做网站是学什么专业的/网址之家大全
  • 专做网页的网站/株洲seo优化推荐