【问题标题】:Sort Array of Objects by specific key value | Javascript [duplicate]按特定键值排序对象数组 | Javascript [重复]
【发布时间】:2017-10-04 14:54:09
【问题描述】:

我在对我正在处理的一个小型个人项目中的特定对象数组进行排序时遇到问题。我以前从未遇到过使用 Array.prototype.sort() 函数的问题,但我想知道多个对象键是否会影响它......

盯着它看的时间比我愿意承认的要长,现在只需要寻求帮助。 :|

目标:相对于每个对象的特定 key.value 按字母顺序对对象数组进行排序。

提前致谢!

JS Fiddle Here

排序函数示例 - (我建议查看完整的 Fiddle 以了解上下文)。

var sorted = array.sort((a, b) => { return a.key > b.key; });

已解决

@Ryan 帮我发现返回一个布尔值是不够的,你需要显式返回一个正数或负数,或者 0。

@Brk 向我展示了一个很棒的快速方法。

这篇文章有非常详细的描述。 Sorting in JavaScript: Shouldn't returning a boolean be enough for a comparison function?

谢谢大家!对不起,重复的帖子:|

【问题讨论】:

  • 排序比较函数应该返回-1如果a < b,0如果a = b,或者1如果a > b。
  • 我认为返回 true / false 就足够了,以前一直如此。但是您的评论激发了我再次搜索并找到了这篇文章...stackoverflow.com/questions/24080785/… 好的...真烦人。不过谢谢!
  • @Ryan 请注意,不需要返回特定值 1 或 -1。任何正值或负值都被视为相同。

标签: javascript arrays sorting


【解决方案1】:

您可以使用localeCompare 方法,该方法将返回一个数字,指示引用字符串是在排序顺序之前还是之后或与给定字符串相同。

var sorted = array.sort((a, b) => {
  return a.subreddit.localeCompare(b.subreddit)
});

DEMO

【讨论】:

  • 这太棒了!谢谢!!
  • @TJBlackman 感谢并乐于提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 2023-03-11
  • 2017-05-25
  • 2023-01-19
  • 1970-01-01
  • 2017-05-31
相关资源
最近更新 更多