1

JSON:

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

Javascript:

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

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

4

1 回答 1

2

如果要按降序排序,补分:

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

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

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

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

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

于 2013-11-12T19:37:59.777 回答