2016-11-21 28 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