Javascript 使用下划线groupby按颜色对一组汽车进行分组

Javascript 使用下划线groupby按颜色对一组汽车进行分组,javascript,iterator,underscore.js,Javascript,Iterator,Underscore.js,我有一系列的汽车 car = { make: "nissan", model: "sunny", colour: "red" }; 如何使用下划线.js按颜色对数组进行分组 我尝试了几个组合,但不确定如何指定迭代器条件: var carsGroupedByColor = _.groupBy(cars, false, colour); var carsGroupedByColor = _.groupBy(vars, false, function(cars){ retur

我有一系列的汽车

car = {
    make: "nissan",
    model: "sunny",
    colour: "red"
};
如何使用下划线.js按颜色对数组进行分组

我尝试了几个组合,但不确定如何指定迭代器条件:

var carsGroupedByColor = _.groupBy(cars, false, colour);
var carsGroupedByColor = _.groupBy(vars, false, function(cars){ return cars[colour]; };

他们每次都会返回数组中的所有内容。

我从未使用过下划线js,但它是否会与他们的文档中的内容一致

var groupedCars = _.groupBy(cars, function(car) { return car.make; });
事实上,我认为这个ir更正确,因为它指出,如果迭代器是字符串,那么它将根据具有该字符串名称的对象中的属性进行分组

var groupedCars = _.groupBy(cars, "make");
如果你只想要红色的汽车(尽管我想你真的应该使用过滤器),那么你可以做以下事情

var redCars = groupedCars["red"];
改用过滤器

查看列表中的每个值,返回通过真值测试的所有值的数组(迭代器)。委托给本机筛选器方法(如果存在)


您不需要第二个参数
false

var redCars = _.groupBy(cars, 'colour');
请注意,第二个参数可以是
函数
字符串
。如果是
字符串
则按该属性名称对组进行下划线

摘自文件:

将集合拆分为多个集合,并根据运行每个集合的结果进行分组 通过迭代器的值。如果迭代器是字符串而不是函数, 在每个值上按迭代器命名的属性分组


这是一个。

我不知道他想要哪一个,因为他要求将品牌分组,但他的示例和您的答案按颜色分组。出于兴趣,我的两个答案中的第一个正确吗?如果没有,我将删除该部分。@JonTaylor你们都是正确的:)关于make分组的好观点,将更新我的答案。当OP要求制作时,我也很困惑,但接下来的例子是颜色。另一件事是,变量redCars表明他想要过滤而不是分组?除非你当然这么做?var redCars=uu.groupBy(汽车,'颜色')[“红色”];或者类似于那些有效JS语法的东西(我不擅长javascript对象)。如果他想得到一种特定的颜色,那么这个例子是正确的。虽然这个答案的语法是正确的,
redCars
变量实际上是一个包含所有颜色的对象。红色汽车将在
redCars.red
上提供。您在示例中说明要按品牌分组,但要按颜色分组?你想要哪一个?另外,变量redCars表明你实际上想过滤列表而不是将其分组?@Jon Taylor,这是你关于过滤而不是分组的一个很好的观点。我已经更新了问题以供考虑,我仍然对变量名redCars有点困惑,除非您计划从grouped by语句中选择red cars组?
var redCars = _.groupBy(cars, 'colour');
var data = [
    {
        "name": "jim",
        "color": "blue",
        "age": "22"
    },
    {
        "name": "Sam",
        "color": "blue",
        "age": "33"
    },
    {
        "name": "eddie",
        "color": "green",
        "age": "77"
    },
    {
        "name": "Dheeraj",
        "color": "blue",
        "age": "25"
    },
    {
        "name": "Suraj",
        "color": "green",
        "age": "25"
    }
];

var result = _.groupBy(data,"color");
console.log(result);