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

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

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

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

1. 默认排序

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

2. 数字排序

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. 反向排序

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

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

4. 排序对象数组

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

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() 方法可能会产生意外的结果。例如:

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

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

6. 自定义排序规则

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

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.mzph.cn/pingmian/42205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内存管理--系列文章柒——硬件架构

一、引子 之前文章讲解的是系统的虚拟内存,本章讲述这些硬件的架构和系统怎样统一管理这些硬件的。 二、物理内存模型 物理内存模型描述了计算机系统中的物理内存如何由操作系统组织和管理。它定义了物理内存如何划分为单元,如何寻址这些单元以及如何…

powershell美化工具Oh My Posh安装教程

1. 安装Oh My Posh 进入Oh My Posh官网,可根据不同平台进行下载 windows下可以直接在微软商店下载 2. 安装Nerd Fonts字体 进入Nerd Fonts官网,选择自己喜欢的字体下载解压后,全选所有文件,右键选择安装即可(忽略LICEN…

ARM_Linux驱动开发——字符设备驱动开发(上)

目录 一、Linux驱动开发思维 二、Linux驱动开发分类 三、“ ARM_Linux驱动开发——字符设备驱动开发 ” 字符设备驱动简介 前言 在分享Linux驱动开发之前,我想带大家首先回顾一下裸机驱动开发和Linux驱动开发的区别。 1、运行环境和操作系统: 裸机驱…

Apache Seata 高可用部署实践

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Apache Seata 高可用部署实践 Seata 高可用部署实践 使用配置中心和数据库来实现 Seata 的高…

使用Spring Boot和自定义缓存注解优化应用性能

在现代应用开发中,缓存是提高系统性能和响应速度的关键技术之一。Spring Boot提供了强大的缓存支持,但有时我们需要更灵活的缓存控制。本文将介绍如何使用Spring Boot和自定义缓存注解来优化应用性能。 1. 为什么需要自定义缓存注解? Sprin…

AI算力革命:GPU租赁与算力市场的未来趋势

在数字化和智能化的时代背景下,人工智能(AI)的快速发展已成为全球科技领域的焦点。AI算力作为支撑其发展的关键因素,正以前所未有的速度改变着我们的生活和工作方式。其中,GPU租赁模式的兴起,不仅解决了AI算…

ASP.NET Web应用中的 Razor Pages/MVC/Web API/Blazor

如果希望使用ASP.NET Core创建新的 Web 应用程序,应该选择哪种方法?Razor Pages还是 MVC(模型-视图-控制器),又或者使用Web API Vue/React/......。 每种方法都有各自的优点和缺点。 什么是 MVC? 大多数服…

轻松设置:服务器域名配置全攻略

目录 前置条件 在阅读本篇内容之前,请先确保以下物料已准备好: 一台公网服务器,服务正常运行申请完成的域名,在对应域名服务商后台正常DNS解析域名备案完成可选条件:有https访问请求时,需要申请SSL证书 …

微信小程序的“小鱼在乎”日程计划系统-计算机毕业设计源码51307

摘要 本文介绍了一种基于微信小程序和Spring Boot后端服务的“小鱼在乎”日程计划系统。该系统结合了前端微信小程序的便捷交互与后端Spring Boot框架的稳健性能,为用户提供了一款功能全面、体验出色的日程管理工具。 “小鱼在乎”日程计划系统涵盖了多种功能&#…

DNS正向解析与反向解析实验

正向解析 安装bind软件 [rootlocalhost ~]# dnf install bind bind-utils -y修改主配置文件/etc/named.conf [rootlocalhost ~]# vim /etc/named.conf重启DNS服务(named) [rootlocalhost ~]# systemctl restart named编辑数据配置文件。在/var/named…

Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制

文件的读取、显示、存取 cv2.imread(imagepath,IMREAD.xxx) 读取图像cv2.imshow(窗口名称,mat图片) 显示图像cv2.imwrite(保存的位置,img) 保存图像 # 1. 读取图像 原始图片路径,图片读取模式 cv2.imread(imagepath,IMREAD.xxx)cv2.IMREAD_COLOR 彩色模式读取 cv2…

Gemini for China 大更新,现已上架 Android APP!

官网:https://gemini.fostmar.online/ Android APP:https://gemini.fostmar.online/gemini_1.0.apk 一、Android APP 如果是 Android 设备,则会直接识别到并给下载链接。PC 直接对话即可。 二、聊天记录 现在 Gemini for China&#xff…

【论文笔记】UniST:通用预训练城市时空预测模型

目录 写在前面1. 通用时空模型的挑战与能力特性2. 构建通用时空模型UniST2.1 大规模时空预训练2.2 时空知识规则引导提示学习 3. UniST的实验与分析3.1 模型预测效果3.2其他实验分析 写在前面 文章标题:UniST: A Prompt-Empowered Universal Model for Urban Spati…

每日一题~ leetcode 402 (贪心+单调栈)

click me! 这个贪心的推导在leetcode上已经很明确了。 click me! 删除k个数,可以先考虑删除一个数。这也是一种常见的思路。(如果进行同样的操作多次,可以先只 考虑一次操作如何实现,或者他的影响。完成这一次操作后,…

Rabnud博士加入了一个社交圈。起初他有5个朋友。他注意到他的朋友数量以下面的方式增长。第1周少了1个朋友......

Rabnud博士加入了一个社交圈。起初他有5个朋友。他注意到他的朋友数量以下面的 方式增长。第1周少了1个朋友,剩下的朋友数量翻倍;第2周少了2个朋友,剩下的朋友数量 翻倍。一般而言,第N周少了N个朋友,剩下的朋友数量翻倍…

程序员下班为什么不关电脑?难道在偷偷加班?!

不管是周围的程序员朋友还是网上的很多程序员朋友,在下班后都是习惯不关电脑的,关上显示器,拿上手机,快乐下班! 那么,为什么程序员下班都不关电脑?难道他们在偷偷加班? 其实&#x…

锂电池寿命预测 | Matlab基于改进的遗传算法优化BP神经网络的锂离子电池健康状态SOH估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 主要流程如下: 1、首先提取“放电截止电压时间”作为锂电池间接健康因子; 2、然后引入改进的遗传算法对BP神经网络的模型参数进行优化。 3、最后 NASA 卓越预测中心的锂电池数据集 B0005、B0006、B0007对…

昇思25天学习打卡营第11天|MindSpore 助力下的 GPT2:数据集加载处理及模型全攻略

目录 环境配置 数据集下载和获取 数据集拆分 处理数据集 模型构建 ​​​​​​​模型训练 ​​​​​​​模型推理 环境配置 “%%capture captured_output”这一行指令通常旨在捕获后续整个代码块所产生的输出结果。首先,将已预装的 mindspore 库予以卸载。随后&a…

讲个SystemVerilog随机约束小坑

正文 记录个在写SystemVerilog随机约束时遇到的一个小坑,如果没有认真去查看随机结果是否符合预期,还真不容易发现。 为了方便讲述,写了如下示例代码。类cl_a里有个随机变量aa,初始值为222。在module top里对类cl_a例化并进行约…

最近你悟出来什么道理?

点击上方△腾阳 关注 转载请联系授权 大家伙,我是腾阳。 活了近30年的我,终于领悟到,人生的旅途是一场深刻而复杂的自我发现与灵魂成长的壮丽征途。 这不仅仅是对外在世界的探索,更是内心深处的一场革命,是灵魂从懵…