javascript - 使用 lodash 按值对对象进行排序

标签 javascript arrays sorting 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 按值对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54520890/

相关文章:

javascript - 在 JS 中构建多维对象

javascript - 如何使 JqGrid 编辑表单做出响应

arrays - 在 C 中将输入作为字符串

c - 迭代具有非标准字符的 char 数组

python - 从 CSV 文件中提取数据、对其进行排序然后将排序后的列表写入另一个 CSV 文件时出现问题

javascript - 如何将 PayU money 与 Cordova 应用程序(混合应用程序)集成

c++ - 检查两个数组是否相等

java - 我应该使用 java collection sort() 还是实现我自己的?

javascript - 如何在我的 Angular 代码中使用 angular-sortable-view?

javascript - 更改对象的嵌套属性