我有一个看起来像这样的数组:
var array = [
{
name : "Bob",
score : 27
},
{
name : "Fred",
score : 32
},
{
name : "Brad",
score : 43
}
]
最初,所有项目均按得分排名。在某些时候,乐谱可能会改变,我想对数组重新排序。
我现在的操作方式是从数组中删除播放器,更新比分,然后遍历数组以找到正确的位置来插入它(因为数组的其余部分仍在排序中)。
有没有更优雅的方式做到这一点,例如使用underscore.js?
谢谢
您可以使用sortBy
函数进行排序,例如:
function sortBy(f, xs) {
var compare = function(x, y) {
return typeof x == 'number' ? x - y
: x > y ? 1
: x < y ? -1
: 0;
};
return xs.sort(function(x, y) {
return compare(f(x), f(y));
});
};
然后像这样使用它:
sortBy(function(x){return x.score}, array);
或与其他可重用性的帮助者:
function dot(x) {
return function(xs) {
return xs[x];
}
}
sortBy(dot('score'), array);
sortBy(dot('name'), array);
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句