[英]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.