NodeJs下划线排序

时间:2014-03-03 17:04:11

标签: node.js coffeescript underscore.js

我需要按x值对数组进行排序:

排序前的

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,我尝试使用Underscore的sortBy,但它不起作用:

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

2 个答案:

答案 0 :(得分:2)

尝试:

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

sortBy的第二个arg只是一个函数,它将集合上的项映射到要排序的值。在这种情况下,集合中的项目是数组中的一个对象,例如{x:0, y: 1234}。因此,您只需选择x属性作为要排序的值。

答案 1 :(得分:1)

来自fine manual

  

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

     

返回 list 的(稳定)排序副本,按照通过 iterator 运行每个值的结果按升序排列。 Iterator也可以是要排序的属性的字符串名称(例如length)。

请注意最后一句话。这意味着您面临的常见案例有一个捷径:

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