(js)sort()数组排序

sort()默认按照字符串排序,reverse()可以倒序

例一:

const arr = ['d', 's', 'a', 'c', 'b']
console.log(arr.sort())//[ 'a', 'b', 'c', 'd', 's' ]

例二:

const arr2 = [7, 6, 9, 18, 12]
console.log(arr2.sort())//[ 12, 18, 6, 7, 9 ]

这里之所以不是[6,7,9,12,18]是因为sort()默认按照字符串排序,他会默认把12,18先取1往后比较

如果想从小到大排序,往下看

例三:

const arr3 = arr2.sort((a, b) => {
    return a - b 
})
console.log(arr3)//[ 6, 7, 9, 12, 18 ]

这里自定义sort()

### 数组 `sort` 方法的使用教程 在 JavaScript 中,`sort()` 是一种强大的工具,用于对数组中的元素进行排序。以下是关于该方法的具体说明以及其工作原理: #### 1. 基本功能 `sort()` 方法会对数组进行就地修改并返回排序后的数组。如果没有提供额外参数,默认会按字符串 Unicode 编码顺序排列数组项[^1]。 ```javascript let fruits = ['banana', 'apple', 'cherry']; fruits.sort(); console.log(fruits); // 输出: ["apple", "banana", "cherry"] ``` 上述代码展示了当不指定任何自定义逻辑时,`sort()` 的行为方式。 --- #### 2. 自定义排序规则 为了实现更复杂的排序需求(如数值大小),可以通过向 `sort()` 提供一个比较函数来完成。此函数接收两个参数 (`a`, `b`) 并决定它们之间的相对位置[^2]。 - 如果返回值小于零,则表示 `a` 应位于 `b` 之前; - 若等于零,两者保持原有次序不变; - 大于零则意味着 `b` 需要排在 `a` 前面。 以下是一个典型的例子展示如何利用这一机制处理数字类型的数组: ```javascript let numbers = [40, 100, 1, 5, 25, 10]; numbers.sort((a, b) => a - b); console.log(numbers); // 输出: [1, 5, 10, 25, 40, 100] ``` 这里通过减法运算实现了从小到大升序排列的效果。 --- #### 3. 对象数组排序 除了基本数据类型外,还可以针对包含对象的数据结构执行类似的排序操作。只需调整比较函数即可满足特定字段的要求。 假设有一个学生列表需要依据年龄属性降序整理如下所示: ```javascript const students = [ { name: 'Alice', age: 22 }, { name: 'Bob', age: 19 }, { name: 'Charlie', age: 25 } ]; students.sort((studentA, studentB) => studentB.age - studentA.age); console.log(students.map(student => `${student.name} (${student.age})`)); // 输出: ["Charlie (25)", "Alice (22)", "Bob (19)"] ``` 此处我们基于每位学生的实际岁数完成了反向排序过程。 --- #### 4. 是否影响原始数组? 值得注意的是,调用 `sort()` 后原数组会被直接更改而不是创建新的副本[^3]。因此,在某些情况下可能需要先复制一份再对其进行变换以免意外破坏初始状态。 例如采用扩展运算符或者 `slice()` 来保留源资料的同时获得已排序版本的结果: ```javascript let originalArray = [7, 3, 5, 8]; let sortedCopy = [...originalArray].sort((a, b) => a - b); console.log(originalArray); // 仍为 [7, 3, 5, 8] console.log(sortedCopy); // 变成 [3, 5, 7, 8] ``` --- #### 5. 跨语言对比:PHP 中的相关概念 尽管 PHP 和 JS 属于不同编程环境下的技术栈,但在涉及基础集合类别的管理上存在相通之处。比如 PHP 的 `sort()` 函数同样能够按照一定准则重排关联型或索引型的一维数组成员,并且也遵循覆盖旧版布局的原则[^4]。 不过需要注意两者的语法风格差异较大,具体应用还需参照各自官方文档深入理解。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值