假设我有一个对象:

{Derp: 17, Herp: 2, Asd: 5, Foo: 8, Qwe: 12}

我需要按值(value)对它进行排序。我想要得到的是:
{Derp: 17, Qwe: 12, Foo: 8, Asd: 5, Herp: 2}

我想为此使用lodash。当我使用_.sortBy时,它不会保留密钥:
_.sortBy({Derp: 17, Herp: 2, Asd: 5, Foo: 8, Qwe: 12}).reverse();
// [17, 12, 8, 5, 2]

hell ,我什至只满足于键数组,但仍然按输入中的值排序:
['Derp', 'Herp', 'Foo', 'Asd', 'Qwe']

最佳答案

你可以这样尝试

_.mapValues(_.invert(_.invert(obj)),parseInt);



要么
var obj = {Derp: 17, Herp: 2, Asd: 5, Foo: 8, Qwe: 12}

var result = _.reduceRight(_.invert(_.invert(obj)), function(current, val, key){
    current[key] = parseInt(val);
    return current;
},{});



要么
使用链方法:
_.chain(obj).invert().invert().reduceRight(function(current, val, key){
    current[key] = parseInt(val);
    return current;
},{}).value()



注意:在大多数情况下,通常不保证浏览器的对象属性顺序。

关于sorting - Lodash按值对对象排序,而不会丢失键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32349838/

10-12 07:37