我有一个看起来像这样的对象:
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>
关于javascript - 使用 lodash 按值对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54520890/