使用数组的索引之一对数组进行排序

2023-12-20

我有一个包含不同值的数组,我想按索引之一中的数值对其进行排序

const arr = [
  ['foo', var, 5],
  ['fee', var, 7],
  ['faa', var, 3]
]

我想使用这个数组从大到小排序arr[2]价值。知道如何做到吗?

期望的结果应该是:

const arr = [
  ['fee', var, 7],
  ['foo', var, 5],
  ['faa', var, 3]      
]

您可以使用sort https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort像这样:

arr.sort((a,b) => {
  return a[2] < b[2] // To sort in descending order
  // return a[2] > b[2] // To sort in ascending order
})

Example:

var arr = [
  ['foo', 'fifth', 5],
  ['fee', 'seventh', 7],
  ['faa', 'third', 3]
];

var sortedArr = arr.sort(function(a,b){
  return a[2] < b[2]
});

console.log(sortedArr)

这是排序函数的工作原理

首先,我们假设这个数组:

[1,2] // where a = 1, b = 2

升序:

a 大于 b 吗?

如果是,我们需要排序 => 返回 true

否则,我们不需要排序 => return false

降序排列:

a 小于 b 吗?

如果是,我们需要排序 => 返回 true

否则,我们不需要排序 => return false

在前面的示例中,我们验证 a 是否小于 b,然后返回 true 对其进行排序,否则返回 false,因为这已经按降序排列。


As per @尼娜·肖尔茨 https://stackoverflow.com/users/1447675/nina-scholz

请不要返回布尔值进行排序,因为排序需要小于零、零或大于零的值。省略相同的情况实际上可能有效,但它会导致算法很难让数组排序.

您应该考虑返回 0、1 或 -1。对于您的情况,您应该像这样使用:

arr.sort((a,b) => {
  if(a[2] < b[2]) return 1
  if(a[2] > b[2]) return -1
  if(a[2] === b[2]) return 0
})

此外

如果值只是整数(不包含 Infinity 和 NaN),则可以简化如下,

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

使用数组的索引之一对数组进行排序 的相关文章

  • ReactiveX:仅对每组中的最后一项进行分组和缓冲

    如何对 Observable 进行分组 并从每个 GroupedObservable 中仅将最后发出的项保留在内存中 这样每个组的行为就像BehaviorSubject 一样 像这样的东西 user 1 msg Anyone here us
  • 平铺单纯形噪声?

    我 作为业余爱好者 对伪随机噪声生成很感兴趣 特别是 Perlin 和 Simplex 算法 Simplex 的优点是速度 尤其是在更高的维度上 但 Perlin 可以相对容易地平铺 我想知道是否有人知道平铺单纯形算法 固定维度就好 泛型更
  • Crypto-Js 库的 hmac-256 脚本返回函数结构而不是 Google Apps 脚本中的值,在外部工作正常吗?

    我正在设置一个谷歌电子表格项目来连接到我的 CryptoExchange API 但是当涉及到这个简单的 CryptoJs Hmac sha256 脚本时 它不起作用 它返回函数结构而不是值 而在外部它工作正常 看我的jsfiddle ht
  • 为什么隐式符号到字符串转换会导致 JavaScript 中出现类型错误?

    有一个 toString on Symbol在 ES6 中 它返回字符串表示形式Symbol 但想知道为什么 Symbol 不起作用 运行这个表达式会抛出TypeError我没想到 后者只是打电话吗 toString 在一个新的Symbol
  • React Native:不透明视图内的透明视图

    我想用不透明框架和透明中心显示相机的视图 就像图片中的一样 黑色部分是相机的视图 我正在寻找具有纯反应本机组件的解决方案 没有额外的库 例如https github com gilbox react native masked view h
  • 如何使用 JavaScript 选择预节点/块中的文本?

    我了解不允许 JS 将任意文本复制到剪贴板背后的安全原因 但是是否有一种方法可以通过单击按钮来选择预节点中的文本 类似于 select 函数在输入中的工作方式 我不是在寻找复制到剪贴板的 jQuery 插件 我只想突出显示预块中的文本 以便
  • 递归修剪对象中所有元素的更好方法?

    如果我有一个像这样的物体 const obj field subfield innerObj a asdasd asdas innerArr s ssad innerArrObj b adsad 我想出了这样的东西 const trimFi
  • O(1) 算法确定节点是否是多路树中另一个节点的后代?

    想象一下下面的树 A B C D E F 我正在寻找一种方法来查询 F 是否是 A 的后代 注意 F 不需要是directA 的后代 在这种特殊情况下这是正确的 只需要针对更大的潜在后代节点池测试有限数量的潜在父节点 当测试一个节点是否是潜
  • window.open:是否可以打开一个新窗口并修改其 DOM

    我想打开一个新窗口 var my window open iframe html blank height 600 width 600 但当我打开它时 我想修改它的DOM 我尝试过 var div my document createEle
  • 为什么我们使用 SpreadsheetApp.flush()?

    我的理解是 flush https developers google com apps script reference spreadsheet spreadsheet app flush有助于在功能发生时执行这些功能 而无需将它们捆绑在
  • setInterval() 在用户离开选项卡时暂停?

    javascript 中是否有任何方法的行为类似于 setInterval 并且当用户离开选项卡时停止并在用户再次进入选项卡时恢复 您可以使用以下方法创建自己的 API可见性API https developer mozilla org e
  • 避免在 ES6 的函数内定位 this 的对象作用域

    例如 我正在使用 D3 js 运行一个项目 导入特定模块并调用它们的函数 Setup TypeScript ES6 导入特定的 D3 组件 角6 我有一个对象 在本例中是一个角度指令 并在 SVG 画布上绘制一些圆圈 并希望它们在拖动事件上
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 如何在 javascript 中基于类型字符串创建新对象?

    如何基于变量类型字符串 包含对象名称 在 javascript 中创建新对象 现在我有 随着更多工具的出现 列表会变得更长 function getTool name switch name case SelectTool return n
  • 自定义指令链接中的 element.replaceWith 仅在第一次调用时有效

    我是 Angularjs 的新手 不太了解幕后的情况 基本上我想创建一个 E 扭结指令 基于控制器中的数据 我动态创建html 就像整个 表 一样 以替换该指令 我的 html 文件中的指令是这样的
  • 尝试使用 Firebug 查找 JavaScript 文件中的函数

    我试图找到这个函数调用 myFooBar 该函数在某些 HTML 中内联引用 但页面加载了大量 JavaScript 并且在每个文件中搜索该函数需要相当多的工作 如何使用 Firebug 找到此函数所在的 JavaScript 文件 打开脚
  • JavaScript Promise 不执行 .then()

    我在 JavaScript 中的 Promise 方面遇到了一些问题 我想做的是获得一个地址列表 然后对于每个地址 我需要调用地理编码 API 来获取 lat lng 然后我将继续将标记与热图一起绘制 这是我的代码 let promiseK
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • DOM 解析器 Chrome 扩展内存泄漏

    问题 我开发了一个扩展程序 可以拦截 Web 请求 获取 Web 请求来源的 HTML 并对其进行处理 我使用 DOMParser 来解析 HTML 并且意识到 DOMParser 正在导致大量内存泄漏问题 最终导致 chrome 扩展崩溃

随机推荐

  • 如何在 Visual Studio 中自动递增程序集(内部版本)号? [复制]

    这个问题在这里已经有答案了 如何在 Visual Studio 中自动递增程序集 内部版本 号 复制 questions 650 自动更新版本号 https stackoverflow com questions 650 您可以只在其中使用
  • Spring Boot Actuator - 自定义健康端点

    我正在使用 Spring Boot Actuator 来返回应用程序的运行状况 public class HealthMonitor implements HealthIndicator Override public Health hea
  • 如何从表单中获取所有控件(包括任何容器中的控件)?

    例如 我需要一种方法来禁用表单中的所有按钮或验证所有文本框的数据 有任何想法吗 提前致谢 最简单的选择可能是级联 public static void SetEnabled Control control bool enabled cont
  • Play war 部署导致 Tomcat 停止

    我目前在 Tomcat 下的播放应用程序中遇到一些 onStop 问题 我正在使用 play 2 2 2 sbt 0 13 0 scala 2 10 4 和 Tomcat 7 和 jdk1 6 为了创建一个 war 文件 我使用 play2
  • 当预设为 640x480 时,为什么使用 AVFoundation 捕获图像会得到 480x640 图像?

    我有一些非常基本的代码来使用 AVFoundation 捕获静态图像 AVCaptureDeviceInput newVideoInput AVCaptureDeviceInput alloc initWithDevice self bac
  • 将“using”指令限制为当前文件

    抱歉问这个愚蠢的问题 但是有什么办法可以限制using指向当前文件的指令 以便它们不会传播到当前文件 include这个文件 不 没有 这就是为什么您不应在头文件或 include 的任何其他文件中使用 using 指令
  • 当 nan 在列表中第一个时,matplotlib 出现问题

    我有两个数字列表 我正在使用 matplotlib 在 Python 中绘制图表 但是 如果其中一个列表以 nan 值开头 matplotlib 将不会绘制我拥有的 15k 点中的任何一个 但是 如果列表中第一个值之后的某个位置有一个 na
  • django+mysql='DatabaseWrapper'对象没有属性'Database'错误

    我刚刚安装了Python 3 3 0 mysql connector and Django 然后我创建了我的第一个应用程序 名为 mysite 在settings py我添加了这些行 DATABASES default ENGINE mys
  • 在 GitHub 上分叉私有仓库有什么优势吗?

    我是在一家小公司从事私人 GitHub 存储库工作的少数开发人员之一 该存储库是由我们的老板在他的 GitHub 帐户下创建的 所有开发人员都可以对其进行推送访问 如您所知 即使您没有付费订阅 也可以分叉主存储库 并且分叉仍将保持私有状态
  • 如果选择了多个项目,如何在 QListWidget 中打印多个项目

    我有 QListWidget 并且那里有字符串 当我选择一个字符串时 我想显示它的索引号和文本 但问题是 如果我选择超过 1 个项目 它不会显示所有索引 它只显示一个 from PyQt5 QtWidgets import import s
  • 在indexeddb中add和put有什么区别?

    我刚刚开始使用indexeddb 并转换Web SQL 我尝试使用 add 和 put 在数据存储中添加一些数据 我真的看不出使用这两个函数有什么区别 我想我必须知道其中的区别 这样我才能正确地使用它们 感谢转发 add 和 put 之间的
  • 使用 Jackson 将 Java 对象转换为 JSON

    我希望我的 JSON 看起来像这样 information timestamp xxxx feature xxxx ean 1234 data xxxx timestamp yyy feature yyy ean 12345 data yy
  • Android/Java:如何在 5 秒后停止下载?

    我正在使用 AsyncTask 下载文件 目的是测量连接的下载速度 我想在5秒后停止下载 以便我可以检查下载的总字节数并计算速度 这是我正在使用的代码 位于 doInBackground 方法内 try InputStream is new
  • Ansible 2.1.0使用become/become_user无法设置临时文件的权限

    我的服务器上有一个 ansible 2 1 0 我通过以下方式进行部署vagrant以及在 PC 上 部署 角色有 name upload code become true become user www data git email pr
  • 如何检查电子邮件ID是否存在?

    如何使用 PHP 检查电子邮件 ID 是否存在 并获取有关电子邮件 ID 所有者的信息 是否可以获得有关电子邮件 ID 所有者的信息 是否必须使用某些协议 如 POP 请帮我 如果不发送电子邮件并让用户以某种方式回复 则无法 100 保证知
  • 无法在 php 中获取已发布的 FormData

    我正在尝试在 PHP 中使用发布的 FormData 形式的 AJAX 调用 但我无法检索变量 我做错了什么 这是我的 JavaScript var sendData new FormData sendData append itemid
  • 我不应该捕获哪些异常?

    我有一个运行长批处理过程的应用程序 其中可能会引发许多异常 如果在批次中的一项期间引发非关键异常 我想简单地记录它并继续 这样我们就可以稍后修复问题 同时让其他批次项目继续 一些例外 例如OutOfMemoryException 对整个应用
  • 删除 Redshift 中的循环

    我有一个表 其中包含有关数据库中不同表的信息 对于其中的每个表 我希望定期进行日志记录 每天 问题是我使用 for 循环完成了此操作 并且在 Redshift 中执行需要花费大量时间 我给出了用于创建表 日志记录表和使用 for 循环的过程
  • 向下滚动后表格视图单元格发生变化

    我正在分组的表格视图中制作一个表单 在这种形式中 我有 UI 开关和文本字段 但向下滚动后 单元格样式正在发生变化 这是我的 cellForRowAt 索引 UITableViewCell tableView UITableView tab
  • 使用数组的索引之一对数组进行排序

    我有一个包含不同值的数组 我想按索引之一中的数值对其进行排序 const arr foo var 5 fee var 7 faa var 3 我想使用这个数组从大到小排序arr 2 价值 知道如何做到吗 期望的结果应该是 const arr