2016-11-21 176 views
0

我使用lodash,这里的一些示例代码:为什么lodash在数组中反向排序?

var stuff = [{a: 100}, {a: 90}]; 

var res1 = _.sortBy(stuff, function(st) { 
    return [st.a]; 
}); 

var res2 = _.sortBy(stuff, function(st) { 
    return st.a; 
}); 



console.log(res1); 
console.log(res2); 

这将返回:

[{a: 90}, {a: 100}] 
[{a: 100}, {a: 90}] 

时会返回数组为什么会转?

回答

1

排序多列

_.sortBy(data, ['key1', 'key2']); 
4

排序回调不希望数组被返回(为什么?),因此它隐式地将其转换为字符串。字符串按字母顺序排序。在这种特定情况下,9大于1,因此“90”大于“100”。

+0

我怎么会由多个列做排序呢? – Shamoon

+0

我有一种感觉,这将是一个[XY问题](http://xyproblem.info)。这是一个不同的问题,但是您可以将一系列排序函数传递给'_.sortBy()',每列一个。 – JJJ

+0

@Shamoon检查我的答案 – stasovlas