Javascript 下划线JS:u.groupBy与u.sortBy一起
我试图成对使用下划线Javascript 下划线JS:u.groupBy与u.sortBy一起,javascript,underscore.js,Javascript,Underscore.js,我试图成对使用下划线.groupBy()和.sortBy,问题是最后一个将带有从groupBy返回的键的对象更改为带有索引的数组。是否可以保留对象的原始索引(键) 下面是一个例子: 我的代码: var sorted = _.chain(cars).groupBy('Make').sortBy(function(car) { return car.length * -1; }); 来自groupBy的结果: { "Volvo" : [ "S60", "V40" ], "
.groupBy()
和.sortBy
,问题是最后一个将带有从groupBy
返回的键的对象更改为带有索引的数组。是否可以保留对象的原始索引(键)
下面是一个例子:
我的代码:
var sorted = _.chain(cars).groupBy('Make').sortBy(function(car) {
return car.length * -1;
});
来自groupBy
的结果:
{
"Volvo" : [ "S60", "V40" ],
"Volkswagen" : [ "Polo", "Golf", "Passat" ]
}
[
0 : [ "Polo", "Golf", "Passat" ],
1 : [ "S60", "V40" ]
]
排序结果来自,
:
{
"Volvo" : [ "S60", "V40" ],
"Volkswagen" : [ "Polo", "Golf", "Passat" ]
}
[
0 : [ "Polo", "Golf", "Passat" ],
1 : [ "S60", "V40" ]
]
预期结果:
[
"Volkswagen" : [ "Polo", "Golf", "Passat" ],
"Volvo" : [ "S60", "V40" ]
]
对象在JavaScript中是无序的。如果您需要类似于对象但已排序的对象,则可以使用
\uu.pairs
对其进行转换,然后对对象列表进行排序
_.pairs({
"Volvo" : [ "S60", "V40" ],
"Volkswagen" : [ "Polo", "Golf", "Passat" ]
})
给出:
[
["Volvo", [ "S60", "V40" ]],
["Volkswagen", [ "Polo", "Golf", "Passat" ]]
]
…然后您可以使用对其进行排序。如果将上述内容分配给车辆
,则:
_.sortBy(cars, function(x) { return -x[0].length; });
给出:
[
[ 'Volkswagen', ['Polo', 'Golf', 'Passat' ]],
[ 'Volvo', ['S60', 'V40']]
]
对象在JavaScript中是无序的。如果您需要类似于对象但已排序的对象,则可以使用\uu.pairs
对其进行转换,然后对对象列表进行排序
_.pairs({
"Volvo" : [ "S60", "V40" ],
"Volkswagen" : [ "Polo", "Golf", "Passat" ]
})
给出:
[
["Volvo", [ "S60", "V40" ]],
["Volkswagen", [ "Polo", "Golf", "Passat" ]]
]
…然后您可以使用对其进行排序。如果将上述内容分配给车辆
,则:
_.sortBy(cars, function(x) { return -x[0].length; });
给出:
[
[ 'Volkswagen', ['Polo', 'Golf', 'Passat' ]],
[ 'Volvo', ['S60', 'V40']]
]
您是否计划显示cars
变量?您不能对对象排序(键没有顺序),只能对数组排序!您的“预期结果”是一个语法错误。@Bergi是的,我知道这是不可能的,但您仍然可以拥有这样一个数组:var arr=[];arr[“沃尔沃”]=“S60”、“V40”]
。这就是我指的那个。@AndriyHoren:。这些仍然没有排序。您是否计划显示cars
变量?您不能对对象进行排序(键没有顺序),只能对数组进行排序!您的“预期结果”是一个语法错误。@Bergi是的,我知道这是不可能的,但您仍然可以拥有这样一个数组:var arr=[];arr[“沃尔沃”]=“S60”、“V40”]
。这就是我指的那个。@AndriyHoren:。那些还没有定购。