2014-03-03 45 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')