前端面试题22(js中sort常见的用法)

news/2024/7/17 5:28:31 标签: 前端, javascript

在这里插入图片描述
JavaScript 的 sort() 方法是数组的一个非常强大的功能,用于对数组的元素进行排序。这个方法直接修改原数组,并返回排序后的数组。sort() 的默认行为是将数组元素转换为字符串,然后按照字符串的 Unicode 字典顺序进行排序。这意味着如果你试图排序数字或其他类型的数据,可能不会得到预期的结果。

为了更好地控制排序过程,你可以向 sort() 方法传递一个比较函数作为参数。这个函数应该接收两个参数,并返回一个负数、零或正数,用来指示第一个参数应该排在第二个参数之前、之后还是相同位置。

以下是 sort() 方法的一些常见用法:

1. 默认排序

javascript">let fruits = ['banana', 'apple', 'orange'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'orange']

2. 数字排序

javascript">let numbers = [5, 3, 8, 1, 2];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 2, 3, 5, 8]

在这个例子中,我们传递了一个箭头函数 (a, b) => a - bsort() 方法。这个函数确保了数字以升序排列。

3. 反向排序

javascript">let numbers = [5, 3, 8, 1, 2];
numbers.sort((a, b) => b - a);
console.log(numbers); // [8, 5, 3, 2, 1]

通过改变比较函数,我们可以很容易地实现降序排列。

4. 排序对象数组

假设我们有一个对象数组,每个对象都有一个 age 属性,我们想按照年龄排序:

javascript">let people = [
  { name: 'Alice', age: 30 },
  { name: 'Bob', age: 25 },
  { name: 'Charlie', age: 35 }
];

people.sort((a, b) => a.age - b.age);
console.log(people);
// [
//   { name: 'Bob', age: 25 },
//   { name: 'Alice', age: 30 },
//   { name: 'Charlie', age: 35 }
// ]

5. 混合类型排序

如果数组中的元素类型不同,sort() 方法可能会产生意外的结果。例如:

javascript">let mixed = ['1', 2, '3', 4];
mixed.sort();
console.log(mixed); // ['1', '2', '3', 4]

在这个例子中,由于 sort() 默认将所有元素转换为字符串,所以数字 24 被排在了 '3' 的前面。

6. 自定义排序规则

你可以创建更复杂的比较函数来实现特定的排序逻辑:

javascript">let items = [
  { value: 'A', order: 2 },
  { value: 'B', order: 1 },
  { value: 'C', order: 3 }
];

items.sort((a, b) => a.order - b.order);
console.log(items);
// [
//   { value: 'B', order: 1 },
//   { value: 'A', order: 2 },
//   { value: 'C', order: 3 }
// ]

以上就是 sort() 方法的一些常见用法。在使用时,重要的是要理解它的默认行为,并知道如何通过传递比较函数来控制排序过程。


http://www.niftyadmin.cn/n/5543417.html

相关文章

Canvas:掌握颜色线条与图像文字设置

想象一下,用几行代码就能创造出如此逼真的图像和动画,仿佛将艺术与科技完美融合,前端开发的Canvas技术正是这个数字化时代中最具魔力的一环,它不仅仅是网页的一部分,更是一个无限创意的画布,一个让你的想象…

动手学深度学习(Pytorch版)代码实践 -循环神经网络- 56门控循环单元(`GRU`)

56门控循环单元(GRU) 我们讨论了如何在循环神经网络中计算梯度, 以及矩阵连续乘积可以导致梯度消失或梯度爆炸的问题。 下面我们简单思考一下这种梯度异常在实践中的意义: 我们可能会遇到这样的情况:早期观测值对预测…

知名的以图叙事开源平台和工具

以图叙事是一种通过图表和图形来讲述故事或传达信息的方式,使复杂的数据更易于理解和更有吸引力。以下是一些知名的开源平台和工具,可以帮助你创建以图叙事的精彩内容: 1. StoryMapJS 描述: 一个简单的工具,用于创建由位置驱动的…

day04-组织架构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.组织架构-树组件应用树形组件-用层级结构展示信息,可展开或折叠。 2.组织架构-树组件自定义结构3.组织架构-获取组织架构数据4.组织架构-递归转化树形…

如何在Spring Boot中实现数据加密

如何在Spring Boot中实现数据加密 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 一、数据加密的重要性与应用场景 在当今信息安全日益受到重视的背景下&…

【数据结构与算法】希尔排序

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​

分治精炼宝库-----快速排序运用(⌯꒪꒫꒪)੭

目录 一.基本概念: 一.颜色分类: 二.排序数组: 三.数组中的第k个最大元素: 解法一:快速选择算法 解法二:简单粗暴优先级队列 四.库存管理Ⅲ: 解法一:快速选择 解法二:简单粗…

CAN学习笔记

学习链接:CAN学习笔记(1)_can sjw-CSDN博客 内容全部取自链接,非原创。用于自己学习和记录,如有错误请指正。如果侵权了,请联系我删掉。 CAN主要有两种物理层,1.闭环的ISO11898 2.开环的ISO1…