当前位置:首页 > 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'](区分大小写)

数字升序排序

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

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()已是稳定排序。对于旧环境可手动实现稳定排序:

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. 比较函数应返回:

    js数组实现排序

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

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

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

jquery js

jquery js

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

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…