当前位置:首页 > JavaScript

实现排序 js

2026-04-05 14:44:21JavaScript

实现 JavaScript 排序的方法

使用 Array.prototype.sort() 方法

JavaScript 数组自带 sort() 方法,可以对数组元素进行排序。默认情况下,sort() 将元素转换为字符串并按 Unicode 码点排序。

const arr = [3, 1, 4, 1, 5, 9, 2, 6];
arr.sort(); // 默认排序
console.log(arr); // [1, 1, 2, 3, 4, 5, 6, 9]

对于数字排序,需要提供比较函数:

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

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

实现自定义排序算法

如果需要更复杂的排序逻辑,可以手动实现排序算法,如冒泡排序、快速排序等。

实现排序 js

冒泡排序示例:

function bubbleSort(arr) {
    let len = arr.length;
    for (let i = 0; i < len - 1; i++) {
        for (let j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; // 交换元素
            }
        }
    }
    return arr;
}

const arr = [3, 1, 4, 1, 5, 9, 2, 6];
console.log(bubbleSort(arr)); // [1, 1, 2, 3, 4, 5, 6, 9]

快速排序示例:

实现排序 js

function quickSort(arr) {
    if (arr.length <= 1) return arr;
    const pivot = arr[0];
    const left = [];
    const right = [];
    for (let i = 1; i < arr.length; i++) {
        if (arr[i] < pivot) left.push(arr[i]);
        else right.push(arr[i]);
    }
    return [...quickSort(left), pivot, ...quickSort(right)];
}

const arr = [3, 1, 4, 1, 5, 9, 2, 6];
console.log(quickSort(arr)); // [1, 1, 2, 3, 4, 5, 6, 9]

对象数组排序

对于对象数组,可以根据对象的某个属性进行排序。

const users = [
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 30 },
    { name: 'Charlie', age: 20 }
];

// 按 age 升序排序
users.sort((a, b) => a.age - b.age);
console.log(users);
// [
//     { name: 'Charlie', age: 20 },
//     { name: 'Alice', age: 25 },
//     { name: 'Bob', age: 30 }
// ]

字符串排序

字符串排序可以直接使用 sort(),但需要注意大小写问题。

const names = ['Alice', 'bob', 'Charlie', 'dave'];
names.sort(); // 默认按 Unicode 排序(大写字母优先)
console.log(names); // ['Alice', 'Charlie', 'bob', 'dave']

// 忽略大小写排序
names.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
console.log(names); // ['Alice', 'bob', 'Charlie', 'dave']

以上方法覆盖了 JavaScript 中常见的排序需求,可以根据具体场景选择合适的方式。

标签: js
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现驼峰

js实现驼峰

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