按升序排序

时间:2018-03-31 21:38:16

标签: javascript ecmascript-6

作为ES6和JavaScript的新手,当我需要通过特定键对对象数组进行排序时,我会这样做:

objectArray.sort(x=> x.orderKey).reverse();

在性能方面,由于reverse方法在另一个循环中运行原始数组,或者它可能会创建一些额外的临时变量(但是,我不确定它的机制),我认为这不是正确的解决方案。是否有任何内置功能允许指定降序或升序?

1 个答案:

答案 0 :(得分:2)

Array#sort的工作方式不同。

您需要指定两个给定元素的顺序,并返回小于零,零或大于零的值的值,具体取决于项目的顺序。

如果orderKey是一个数值,您可以返回应该是

的递增值的增量
objectArray.sort((a, b) => a.orderKey - b.orderKey)

对于相反的顺序,您可以交换计算操作数。

对于字符串值,您可以使用比较

objectArray.sort((a, b) => (a, b) => a.orderKey > b.orderKey || -(a.orderKey < b.orderKey))

String#localeCompare

objectArray.sort((a, b) => a.orderKey.localeCompare(b.orderKey))