【问题标题】:lodash - convert object map to array and sort by key [duplicate]lodash - 将对象映射转换为数组并按键排序[重复]
【发布时间】:2018-03-07 17:23:43
【问题描述】:

我需要将对象映射(服务器响应)转换为数组并按对象的键对其进行排序。

给定:

var ppl = {
    1: { name: 'Fred', age: 31 },
    0: { name: 'Alice', age: 33 },
    3: { name: 'Frank', age: 34 },
    2: { name: 'Mary', age: 36 }
}

console.log(ppl);

看起来对象在创建时是按key排序的,控制台显示如下:

{
    0: { name: 'Alice', age: 33 }
    1: { name: 'Fred', age: 31 }
    2: { name: 'Mary', age: 36 }
    3: { name: 'Frank', age: 34 }
}

然后我使用 lodash 转换成这样的数组:

var arr = _.toArray(ppl);
console.log(arr)
  1. 我不认为初始对象映射的顺序是有保证的,是 对吗?
  2. 如何确保数组顺序基于对象映射的键?

【问题讨论】:

  • @Thibs => 我的回答对你来说是正确的还是遗漏了什么?

标签: javascript lodash


【解决方案1】:

使用_.chain() 方法很容易做到这一点:

var ppl = {
    1: { name: 'Fred', age: 31 },
    0: { name: 'Alice', age: 33 },
    3: { name: 'Frank', age: 34 },
    2: { name: 'Mary', age: 36 }
};

const output = _.chain(ppl)
  .toArray()
  .sortBy()
  .value();
  
console.log(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2016-05-31
    • 1970-01-01
    • 2019-05-12
    • 2018-01-29
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多