【问题标题】:Sorting objects inside an array [duplicate]对数组中的对象进行排序[重复]
【发布时间】:2023-09-05 03:30:01
【问题描述】:

我有一个对象数组,我基本上是在对它进行排序时打破了我的头脑,我的数组类似于 dis :

var myArray = [{1:3},{3:19},{5:53},{6:26},{e:53},{c:107},{B: 2},{f: 5}];

但我必须以这样的方式对它进行排序,以使我的最终输出是这样的:

 myArray = [{c:107},{5:53},{e:53},{6:26},{3:19},{f: 5},{1:3},{B: 2}];

即;根据数组元素的每个对象中的值,数组应该按降序排序。

提前谢谢你。

【问题讨论】:

  • 数组排序比较简单。使用 .sort 方法,从两个参数中获取要比较的属性,然后比较它们并返回 -1、0 或 1。如果您在其中一个步骤中遇到问题,请就该步骤提出问题,不是整个过程。
  • 只需要写一个比较函数,使用sort()
  • 为什么我得到了所有的反对票:(,我知道数组排序需要一个函数引用,而且我是一个全新的人:(
  • @user3365783 提供您所做的研究并尝试解决问题,否则您似乎希望有人为您编写代码(这不是本网站的目的)。 MDN 有关于 JavaScript 的完整文档,很容易在此处找到:developer.mozilla.org/en-US/docs/Web/JavaScript
  • 是的,从现在开始,我也会提供有关尝试的研究。谢谢你的链接:)..真的需要它..我明白你的意思。

标签: javascript arrays sorting object


【解决方案1】:

您可以像这样在Array.prototype.sort 中简单地使用比较器功能

console.log(myArray.sort(function(first, second) {
    return second[Object.keys(second)[0]] - first[Object.keys(first)[0]];
}));

由于每个对象中的键都不同,因此我们得到了实际的键列表,并且只取其中的第一项。

【讨论】: