javascript – 使用lodash按值排序对象

我有一个看起来像这样的对象:

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获取数组中每个数组的第一个元素


下一篇:javascript – 在带有express.js和lodash / underscore的模板文件中包含一个页脚?