繁体   English   中英

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

[英]lodash - convert an object into a sorted array based on the keys of the object

我想使用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中是否有任何功能对此进行了优化?

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

资源:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM