lodash - 根据对象的键将对象转换为有序数组

时间:2018-04-10 08:05:17

标签: javascript lodash

我想使用lodash来转换像这样的对象:

var a = {1:'a', 3:'b', 2:'c'};

基于对象的键的排序值数组,如:

var result = ['a','c','b'];

我知道我可以这样做:

var keyRef = Object.keys(a).sort();
var result = keyRef.map(v => a[v]);

但这种方式是否已经优化 - 在lodash中是否有任何函数可以为此更优化?

3 个答案:

答案 0 :(得分:4)

使用普通的Javascript,您可以使用Object.values并将此数组作为排序结果,因为如果对象的键可以读取为32位整数,则Javascript将按数字顺序使用它们。

来源:

var object = { 1: 'a', 3: 'b', 2: 'c' },
    values = Object.values(object);
    
console.log(values);

答案 1 :(得分:0)

使用lodash,

const o = {1:'a', 3:'b', 2:'c'};
const res = _.sortBy(o, (a, b) => b);

console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.core.js"></script>

答案 2 :(得分:0)

Lodash具有_.values(obj)功能。但是请注意,不保证结果排序。然而,正如@Nina指出的那样,如果你坚持使用整数作为键,那么顺序应该是一致的(除非lodash做了一些奇怪的事情)。