JSON:
[
{ score: 0.648 },
{ score: 0.945 }
]
使用Javascript:
_.sortBy(array, function(obj){ return obj.score });
然而,这只返回原始数组的副本。什么也没有变。我想按降序对数组进行排序。任何想法如何做到这一点?
答案 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
}
这个方案更加灵活,因为排序机制可以让你完全控制并且不做任何假设(除了你的比较函数是一致的;如果不是,你会得到奇怪的行为)。