使用下划线排序依据对对象进行排序

Using underscores sortBy to sort objects

本文关键字:排序 对象 下划线      更新时间:2023-09-26

JSON:

[
   { score: 0.648 },
   { score: 0.945 }
]

Javascript:

_.sortBy(array, function(obj){ return obj.score });

但是,这只返回原始数组的副本。一切都没有改变。我想以降序方式按分数对数组进行排序。有什么想法吗?

如果要

降序排序,请补充分数:

_.sortBy(array, function(obj) { return -obj.score; });

对于一般的数组排序,在 Underscore 之外,您可以在 JavaScript Array 原型上使用本机.sort()。 它接受数组的两个实际元素作为参数,并且应返回一个小于、等于或大于零的数字,具体取决于两个元素之间的排序关系。

在您的情况下,这看起来像:

array.sort(function(o1, o2) {
  return -(o1.score - o2.score); // or just return o2.score - o1.score if you like
}

这个方案要灵活得多,因为排序机制让你完全控制,不做任何假设(除了你的比较函数是一致的;如果不是,你会得到奇怪的行为)。