使用Javascript和Underscore.js以另一种方式排序

Har*_*rry 41 javascript sorting underscore.js

我正在使用Javascript sort(使用Underscore.js):

_.sortBy(["Bob", "Mary", "Alice"], function (name) {return name})
> ["Alice", "Bob", "Mary"]
Run Code Online (Sandbox Code Playgroud)

我希望数组以其他方式返回.我怎么做?

["玛丽","鲍勃","爱丽丝"]

我不希望在它排序后将其反转 - 我希望它是第一次以另一种方式创建.

谢谢.

h--*_*--n 80

我宁愿一起使用它而不是扔掉下划线,而是利用Array.reverse两者的优点.

_.sortBy(["Bob", "Mary", "Alice"], function (name) {return name})
 .reverse()
Run Code Online (Sandbox Code Playgroud)

  • 此外,代替函数(名称){返回名称},您可以使用下划线的_.identity函数:_.sortBy(["Bob","Mary","Marley","Alice"],_.identity).reverse () (9认同)
  • 我不会称之为更优雅,因为`.reverse()`调用会在数组中添加另一个循环.所以它实际上比Felix建议的反向排序效率低. (4认同)

Fel*_*her 34

我会做Underscore在幕后做的事情:使用Array#sort方法.

["Bob", "Mary", "Alice"].sort(function (a, b) {
    if (a < b) return 1;
    if (b < a) return -1;
    return 0;
});
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想修改原始数组,请先克隆它:

_.clone(["Bob", "Mary", "Alice"]).sort(...)
Run Code Online (Sandbox Code Playgroud)