如何使用下划线.js进行排序 asc 和 desc 排序?

2022-08-30 01:55:34

我目前正在使用underscorejs对我的json进行排序。现在我要求使用下划线.js进行排序。我在文档中没有看到任何关于相同内容的内容。我怎样才能做到这一点?ascendingdescending


答案 1

您可以使用 .sortBy,它将始终返回一个升序列表:

_.sortBy([2, 3, 1], function(num) {
    return num;
}); // [1, 2, 3]

但是您可以使用 .reverse 方法将其降序排列

var array = _.sortBy([2, 3, 1], function(num) {
    return num;
});

console.log(array); // [1, 2, 3]
console.log(array.reverse()); // [3, 2, 1]

或者在处理数字时,在返回中添加一个负号以降序列表:

_.sortBy([-3, -2, 2, 3, 1, 0, -1], function(num) {
    return -num;
}); // [3, 2, 1, 0, -1, -2, -3]

在引擎盖下 .sortBy 使用内置的 .sort([handler])

// Default is alphanumeric ascending:
[2, 3, 1].sort(); // [1, 2, 3]

// But can be descending if you provide a sort handler:
[2, 3, 1].sort(function(a, b) {
    // a = current item in array
    // b = next item in array
    return b - a;
});

答案 2

使用下划线的降序可以通过将返回值乘以 -1 来完成。

//Ascending Order:
_.sortBy([2, 3, 1], function(num){
    return num;
}); // [1, 2, 3]


//Descending Order:
_.sortBy([2, 3, 1], function(num){
    return num * -1;
}); // [3, 2, 1]

如果按字符串而不是数字排序,则可以使用 charCodeAt() 方法来获取 unicode 值。

//Descending Order Strings:
_.sortBy(['a', 'b', 'c'], function(s){ 
    return s.charCodeAt() * -1;
});