当前位置:首页 > JavaScript

js数组实现排序

2026-03-16 01:05:20JavaScript

数组排序方法

JavaScript数组提供了内置的sort()方法用于排序,默认按Unicode码点升序排列。对于数字排序需自定义比较函数。

基本语法:

arr.sort([compareFunction])

默认排序(字符串)

不传递比较函数时,元素会被转换为字符串并按照Unicode顺序排序:

const fruits = ['banana', 'Apple', 'orange'];
fruits.sort(); 
// 结果: ['Apple', 'banana', 'orange'](区分大小写)

数字升序排序

通过比较函数实现数字正确排序:

js数组实现排序

const numbers = [40, 100, 1, 5];
numbers.sort((a, b) => a - b);
// 结果: [1, 5, 40, 100]

数字降序排序

调整比较函数返回值即可:

numbers.sort((a, b) => b - a);
// 结果: [100, 40, 5, 1]

对象数组排序

根据对象属性排序需在比较函数中指定属性:

const items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 }
];
items.sort((a, b) => a.value - b.value);

实现稳定排序

V8引擎(Chrome/Node.js)在7.0+版本后,sort()已是稳定排序。对于旧环境可手动实现稳定排序:

js数组实现排序

function stableSort(arr, compare) {
  const mapped = arr.map((el, i) => ({ el, i }));
  mapped.sort((a, b) => compare(a.el, b.el) || a.i - b.i);
  return mapped.map(({ el }) => el);
}

注意事项

  1. sort()会修改原数组,如需保留原数组需先拷贝:

    const sorted = [...arr].sort();
  2. 对包含undefined的数组,这些元素会被排到末尾。

  3. 比较函数应返回:

    • 负数:a排在b前
    • 正数:b排在a前
    • 零:保持相对位置

标签: 数组js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…