作为ES6和JavaScript的新手,当我需要通过特定键对对象数组进行排序时,我会这样做:
objectArray.sort(x=> x.orderKey).reverse();
在性能方面,由于reverse
方法在另一个循环中运行原始数组,或者它可能会创建一些额外的临时变量(但是,我不确定它的机制),我认为这不是正确的解决方案。是否有任何内置功能允许指定降序或升序?
答案 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))
objectArray.sort((a, b) => a.orderKey.localeCompare(b.orderKey))