2014-03-03 43 views
0

我需要由它的x值進行排序的數組:排序後的NodeJS下劃線sortby

之前排序

arr=> 
[ 
    {x:0, y: 1234}, 
    {x:3, y: 324}, 
    {x:1, y: 3487}, 
] 

arr => 
[ 
    {x:0, y: 1234}, 
    {x:1, y: 3487}, 
    {x:3, y: 324}, 
] 

和我米使用的NodeJS和CoffeeScript的,我試圖使用下劃線的sortBy,但它不起作用:

_.sortBy(arr, (x) -> arr.x) 
+1

你想'_.sortBy(arr,(item) - > item.x)'! 'arr'沒有'x'屬性... – Bergi

回答

2

嘗試:

_.sortBy(arr, (item) -> item.x) 

第二對Arg的sortBy僅僅是在集合要排序的一個值項映射功能。在這種情況下,集合中的項目是陣列中的一個對象,例如{x:0, y: 1234}。所以你只需要選擇x屬性作爲排序依據的值。

1

fine manual

sortBy_.sortBy(list, iterator, [context])

返回(穩定地)排序列表的拷貝,通過迭代通過運行每個值的結果以升序排序。迭代器也可以是要排序的屬性的字符串名稱(例如,length)。

注意最後一句。這意味着你面臨的常見情況有一個快捷方式:

sorted = _(arr).sortBy('x')