js中Array.sort()利用零值多维排序

yizhihongxing

首先我们要知道,Array.sort()方法是按照Unicode码点对数组进行排序的,它的默认排序顺序是将元素转换为字符串,然后比较它们对应字符的Unicode码点值。

那么,在js中,我们可以利用Array.sort()方法实现多维排序,其具体操作步骤如下:

1.以排序维度为键名对数组进行排序

假设我们现在有一个二维数组,其中包含了商品的销售信息,如下:

const sales = [
  {name: 'iphone', salesNum: 500, amount: 100000},
  {name: 'macbook', salesNum: 100, amount: 200000},
  {name: 'ipad', salesNum: 800, amount: 50000}
];

现在我们希望按照销售数量(salesNum)升序排列,那么我们可以使用如下代码实现:

sales.sort((a, b) => {
  return a.salesNum - b.salesNum;
});

这里的sort()方法的参数是一个回调函数,该函数返回值决定了两个元素的排序关系,若返回值小于0,则a在b前面,若返回值大于0,则a在b后面,若返回值等于0,则a和b位置不变。

2.以并列排序维度为键名添加排序标准

对于多维排序,有时候某一个维度可能存在并列的情况,此时我们需要再添加一个排序标准来进行排序。比如我们现在还有一个销售明细如下:

const salesDetail = [
  {name: 'iphone', salesNum: 500, unitPrice: 200},
  {name: 'ipad', salesNum: 800, unitPrice: 100},
  {name: 'macbook', salesNum: 100, unitPrice: 800},
  {name: 'ipod', salesNum: 500, unitPrice: 200}
];

我们需要先按照销售数量(salesNum)升序排序,但是销售数量有两个并列的值,此时我们需要再添加一个排序标准,按照价格(unitPrice)升序排序。我们可以这样实现:

salesDetail.sort((a, b) => {
  if (a.salesNum === b.salesNum) {
    return a.unitPrice - b.unitPrice;
  }
  return a.salesNum - b.salesNum;
});

在这个排序中,我们首先比较了销售数量,若相等,则再比较销售价格。

以上就是js中利用Array.sort()方法多维排序的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中Array.sort()利用零值多维排序 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • js实现完美兼容各大浏览器的人民币大小写相互转换

    JS实现完美兼容各大浏览器的人民币大小写相互转换攻略 在JavaScript中,实现人民币大小写相互转换需要考虑兼容各大浏览器的问题。下面是一个完整的攻略,包含了两个示例说明。 步骤一:定义转换函数 首先,我们需要定义一个函数,用于将人民币金额转换为大写金额。以下是一个示例函数: function convertToChineseCurrency(numbe…

    other 2023年8月18日
    00
  • textcontent、innertext的用法 在文档中插入纯文本

    textContent、innerText的用法 在文档中插入纯文本 在JavaScript中,有两个常用的属性可以用来修改页面元素的文本内容,它们分别是 textContent 和 innerText。本文将介绍它们的用法,并以实例演示如何向文档中插入纯文本。 textContent textContent 属性返回或设置指定元素中的文本内容,包括所有后代…

    其他 2023年3月28日
    00
  • 魔兽世界7.3暗牧圣物搭配 wow7.3暗牧最佳圣物特质选择优先级介绍

    魔兽世界7.3暗牧圣物搭配攻略 圣物简介 在魔兽世界中,圣物是角色装备身上的一种特殊装备,可以为角色带来额外的属性加成和技能特效。圣物可以通过多种方式获得,很多职业和专精都有特定的圣物。在暗牧职业中,圣物可以带来强大的提升,但是选择正确的圣物非常重要。 暗牧最佳圣物特质选择 下面将介绍暗牧最佳圣物特质选择的优先级。在具体选择圣物时,需要根据自身的装备和属性进…

    other 2023年6月27日
    00
  • 什么是以太坊?

    以太坊是一种基于区块链的开源分布式计算平台,它的目标是成为一个可编程、可扩展和可靠的分布式计算平台。以太坊的核心是智能合约,它具有自动执行和执行时不可篡改的特性,使得以太坊可以运行去中心化应用程序。 要实现以太坊的完整攻略,需要掌握以下几步。 1.创建一个以太坊钱包地址 以太坊钱包地址类似于银行账户,你需要拥有一个钱包地址才能进行以太币的收发。创建一个以太坊…

    其他 2023年4月19日
    00
  • Jmeter测试必知的名词及环境搭建

    JMeter测试必知的名词及环境搭建 以下是关于JMeter测试必知的名词及环境搭建的完整攻略,包含两个示例说明。 名词解释 在使用JMeter进行性能测试之前,了解以下几个重要的名词是必要的: 线程组(Thread Group):线程组是JMeter中最基本的测试元素,用于模拟并发用户。您可以设置线程数、循环次数、启动延迟等参数。 取样器(Sampler)…

    other 2023年10月19日
    00
  • 恐怖黎明图像引擎初始化失败问题解决步骤

    恐怖黎明图像引擎初始化失败问题解决步骤 如果你在运行恐怖黎明游戏时遇到了“图像引擎初始化失败”的问题,不要担心,下面是解决此问题的步骤。 步骤一:检查硬件和驱动 首先,你需要确保你的计算机硬件能够支持该游戏,包括CPU、内存和显卡。 其次,你需要检查显卡驱动程序是否已经更新到最新版本。通过更新显卡驱动程序可以解决一些因为显卡驱动问题导致的游戏无法正常运行的问…

    other 2023年6月20日
    00
  • 怎样查看nginx版本号

    查看Nginx版本号 在使用Nginx时,有时需要查看Nginx的版本号。本攻略将介绍如何查看Nginx版本号。 使用命令查看Nginx版本号 可以使用以下命令在命令行中查看Nginx版本号: nginx -v 输出结果似于: nginx version: nginx/1.18.0 其中,1.18.0是Nginx的版本号。 使用配置文件查看Nginx版本号 …

    other 2023年5月9日
    00
  • 详细分析Linux文件系统

    详细分析 Linux 文件系统 如果你是一名 Linux 系统管理员或者开发人员,理解 Linux 文件系统是必不可少的。本文将会深入介绍 Linux 文件系统,包括文件系统结构、文件系统类型、文件系统挂载以及一些常见的文件系统命令。 文件系统结构 Linux 文件系统采用树形目录结构,从根目录(/)开始,每个目录都可以包含子目录和文件。下面是一个简单的文件…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部