我有一个看起来像这样的对象:
var unsorted = {a: 15, b: 1,c: 2, d: 4, e: 3, f: 6, g: 1}
我有兴趣用lodash按降序排序,所以预期的结果应该是:
var sortd = {b: 1, g: 1,c: 2, e: 3, d: 4, f: 6, a: 15}
我已经尝试过使用lodash orderBy但是它给出了一个只排序值的数组.
_.orderBy(tempCount, Number, ['desc'])
//Result
[1,1,2,3,4,6,15]
解决方法:
您可以使用已排序的键/值对构建新对象.
实际标准或属性顺序:
>按顺序排序索引,如键
>按插入顺序保留所有其他键
要完全控制订单,请使用带有键的数组将其作为值的排序访问器.
var unsorted = { a: 15, b: 1,c: 2, d: 4, e: 3, f: 6, g: 1 },
sorted = _(unsorted)
.toPairs()
.orderBy([1], ['desc'])
.fromPairs()
.value()
console.log(sorted);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
使用_.orderBy
通过使用特定订单的最后一个参数降序排序,而不是_.sortBy
,它只允许按升序排序.
var unsorted = { a: 15, b: 1,c: 2, d: 4, e: 3, f: 6, g: 1 },
sorted = _(unsorted)
.toPairs()
.orderBy(1, 'desc')
.fromPairs()
.value()
console.log(sorted);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>