首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用underscore.js进行asc和desc排序?

如何使用underscore.js进行asc和desc排序?
EN

Stack Overflow用户
提问于 2013-02-28 22:26:46
回答 5查看 184.5K关注 0票数 176

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-28 22:30:41

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

代码语言:javascript
复制
_.sortBy([2, 3, 1], function(num) {
    return num;
}); // [1, 2, 3]

但是您可以使用.reverse方法来获取它。降序:

代码语言:javascript
复制
var array = _.sortBy([2, 3, 1], function(num) {
    return num;
});

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

或者,在处理数字时,在返回中添加一个负号以向下排列:

代码语言:javascript
复制
_.sortBy([-3, -2, 2, 3, 1, 0, -1], function(num) {
    return -num;
}); // [3, 2, 1, 0, -1, -2, -3]

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

代码语言:javascript
复制
// 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;
});
票数 371
EN

Stack Overflow用户

发布于 2013-08-13 02:28:57

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

代码语言:javascript
复制
//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值。

代码语言:javascript
复制
//Descending Order Strings:
_.sortBy(['a', 'b', 'c'], function(s){ 
    return s.charCodeAt() * -1;
});
票数 59
EN

Stack Overflow用户

发布于 2014-09-12 19:17:21

数组原型的反求方法修改数组并返回对它的引用,这意味着您可以这样做:

代码语言:javascript
复制
var sortedAsc = _.sortBy(collection, 'propertyName');
var sortedDesc = _.sortBy(collection, 'propertyName').reverse();

另外,下划线文档是这样写的:

此外,数组原型的方法通过链接的下划线对象进行代理,因此您可以将reverse或者push添加到链中,并继续修改数组。

这意味着您还可以使用.reverse()链接时:

代码语言:javascript
复制
var sortedDescAndFiltered = _.chain(collection)
    .sortBy('propertyName')
    .reverse()
    .filter(_.property('isGood'))
    .value();
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15137948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档