lodash - 将对象映射转换为数组并按键排序

时间:2018-03-07 17:23:44

标签: javascript lodash

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

假设:

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);

创建时的对象似乎按键排序,控制台显示:

{
    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. 如何确保数组顺序基于对象映射的键?

1 个答案:

答案 0 :(得分:2)

使用_.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>