使用下划线sortBy对对象进行排序

时间:2013-11-12 19:36:37

标签: javascript underscore.js

JSON:

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

使用Javascript:

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

然而,这只返回原始数组的副本。什么也没有变。我想按降序对数组进行排序。任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:2)

如果您想按降序顺序排序,请补充分数:

_.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
}

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

相关问题