下划线:基于多个属性的sortBy()

2023-11-30

我正在尝试根据多个属性对包含对象的数组进行排序。即,如果两个对象之间的第一个属性相同,则应使用第二个属性来比较这两个对象。例如,考虑以下数组:

var patients = [
             [{name: 'John', roomNumber: 1, bedNumber: 1}],
             [{name: 'Lisa', roomNumber: 1, bedNumber: 2}],
             [{name: 'Chris', roomNumber: 2, bedNumber: 1}],
             [{name: 'Omar', roomNumber: 3, bedNumber: 1}]
               ];

对这些进行排序roomNumber属性我将使用以下代码:

var sortedArray = _.sortBy(patients, function(patient) {
    return patient[0].roomNumber;
});

这工作正常,但我该如何继续才能正确排序“John”和“Lisa”?


sortBy说它是一种稳定的排序算法,因此您应该能够首先按第二个属性排序,然后再按第一个属性排序,如下所示:

var sortedArray = _(patients).chain().sortBy(function(patient) {
    return patient[0].name;
}).sortBy(function(patient) {
    return patient[0].roomNumber;
}).value();

当第二个sortBy发现 John 和 Lisa 有相同的房间号,它将按照找到它们的顺序保留它们,即第一个房间号sortBy设置为“丽莎,约翰”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

下划线:基于多个属性的sortBy() 的相关文章

随机推荐

  • Win 7 和 Win 8 中最大化时的无边界应用程序隐藏在任务栏后面

    我在 WPF 中创建了一个无边框窗口 我编写了一个事件来最大化窗口 但在最大化时 窗口的一部分有时隐藏在任务栏后面 片刻后出现在任务栏顶部 如何确保窗口每次都保持在任务栏的顶部 以下是我实施的方法 private void OnMaximi
  • Python WindowsError: [Error 3] 尝试重命名时系统找不到指定的文件

    我不明白出了什么问题 我以前使用过重命名没有任何问题 并且在其他类似问题中找不到解决方案 import os import random directory C whatever string alphabet abcdefghijklmn
  • 使用会话存储变量

    我有一个在每次换页时都会更新的变量 但我想以某种方式将值存储在第一次调用中 变量是例如 sizeOfSearch value HotelList activePropertyCount 第一次加载页面时 它是 933 在下一页上检索到相同的
  • Dataproc:配置 Spark 驱动程序和执行程序 log4j 属性

    正如前面的答案中所解释的 更改 Spark 集群的详细程度的理想方法是更改对应的log4j properties 但是 在dataproc上 Spark在Yarn上运行 因此我们必须调整全局配置而不是 usr lib spark conf
  • $.param() 生成的查询字符串包含数组的方括号

    我有一个这样的对象 var queryObject name Shwetanka subjects Mathematics Physics Computers stream science 当我使用此创建查询字符串时 param query
  • Spark 从不同模式目录读取数据帧

    我的spark程序必须从一个目录中读取 该目录有不同模式的数据 目录 子目录1 文件1 10 外星人1 11 鲍勃 目录 子目录2 文件2 蓝色 123 芝加哥2 红色 34 达拉斯 大约 50 个具有不同模式的目录 我的 Spark 作业
  • Django 上传图像 - 从表单到 Rackspace/S3,无需任何操作

    我只想使用表单上传图像 JPG 然后将该图像发送到 Rackspace Cloud Files 或 Amazon S3 没有操作该文件 无需保存到磁盘 一切都保存到内存 托管在云服务器上 图片大小不会超过75kb Update 两个注意事项
  • 将变量值传递给锚标记中的 href 参数

    如何将变量值传递给锚标记中的 href 参数 a something here a 我希望锚标记在执行上述代码后看起来像这样 a href http www google com jobid 10 something here a 但不知何
  • 查找并替换对象数组中的部分属性值

    我需要在对象数组中搜索关键字并替换它的所有实例 例如 我有以下数组 const test marketType 90 displayName FT Total Match scoreType Over Under 0 75 Remove m
  • 在WPF中检测鼠标直接越过边框

    我有一个简单的 UserControl 其直接子元素是边框
  • 计算字符串中特定的相同字符的连续出现次数 - PHP

    我正在尝试计算一些 连胜 特别是连续获胜和失败的最高次数 以及大多数没有获胜的比赛 没有失败的比赛的发生次数 我有一个看起来像这样的字符串 WWWDDWWWWLLWLLLL 为此我需要能够返回 A 字符的最长连续运行 然后我将复制 L 没有
  • 从文件中读取并查找特定行

    我需要根据某些关键字获取设置文件中的信息 我无法更改格式 该文件是这样的 username myusername address 156a1355e3486f4 data function i if i 0 return true else
  • 使用 Google Translate API 将 JavaScript 内容翻译为 HTML

    我需要创建一个按钮 能够在法语和英语之间切换页面内容的语言 我如何使用 Google Translate API 来实现此目的 这有帮助吗 div div
  • 如何限制上传图片的宽度或高度

    我想以类似的方式操作 调整图像大小兴趣但我不确定解决这个问题的最佳方法是什么 目标是允许混合纵向和横向图像 但对最大高度和宽度施加一些限制 我看到的问题是 如果我调整宽度 肖像图像可能会变得太薄 而风景图像则相反 关于如何使用 PHP 实现
  • 重构 JSON

    我现在有来自服务器的 JSON 响应 但我想根据日期重组它 例如我现在有 items A name a date 2 10 2010 sales 100 name b date 6 10 2010 sales 400
  • “git分支”和“git checkout -b”有什么区别?

    I used git checkout b创建一个新分支 我觉得git branch做同样的事情 如果这两个命令有不同的话 它们有何不同 git checkout b BRANCH NAME创建一个新分支并签出新分支 同时git branc
  • 我应该设计一个主键为 varchar 还是 int 的表?

    我知道这是主观的 但我想了解人们的意见 并希望在设计 sql server 表结构时可以应用一些最佳实践 我个人认为 在固定 最大 长度的 varchar 上键入表是不行的 因为这意味着必须在使用它作为外键的任何其他表上传播相同的固定长度
  • 如何读取/流式传输文件而不将整个文件加载到内存中?

    如何读取任意文件并 逐个 处理它 意味着逐字节或其他一些可以提供最佳读取性能的块大小 而不将整个文件加载到内存中 处理的一个示例是生成文件的 MD5 哈希值 尽管答案可以适用于任何操作 我想拥有或编写这个 但如果我可以获得现有的代码 那就太
  • PDO 使用键作为列名插入数组

    我正在使用 PDO 将 PHP 数组的 POST 内容插入到表中 我正在查看以下代码行 我有一个 必须有更好的方法来做到这一点 的时刻 如果键名与表中的列名匹配 是否有更简单的方法来插入所有键名 代码例如 statement db gt p
  • 下划线:基于多个属性的sortBy()

    我正在尝试根据多个属性对包含对象的数组进行排序 即 如果两个对象之间的第一个属性相同 则应使用第二个属性来比较这两个对象 例如 考虑以下数组 var patients name John roomNumber 1 bedNumber 1 n