Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下划线JS:u.groupBy与u.sortBy一起_Javascript_Underscore.js - Fatal编程技术网

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:。那些还没有定购。