我需要按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)
答案 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')