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

Using underscore groupby to group an array of cars by their colour

本文关键字:阵列 汽车 下划线 groupby 颜色      更新时间:2023-12-05

我有一排汽车。

car = {
    make: "nissan",
    model: "sunny",
    colour: "red"
};

如何使用underscore.js按颜色对数组进行分组?

我尝试了一些组合,但我真的不确定如何指定迭代器条件:

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

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

您不需要false第二个参数,以下参数将起作用:

var redCars = _.groupBy(cars, 'colour');

注意,第二参数可以是functionstring。如果是string,则按该属性名称对组进行下划线。

取自文件:

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

下面是一个工作示例。

我从未使用过下划线js,但会不会与他们的文档不同

var groupedCars = _.groupBy(cars, function(car) { return car.make; });

事实上,我认为这是更正确的,因为它指出,如果迭代器是一个字符串,它会根据具有该字符串名称的对象中的属性进行分组。

var groupedCars = _.groupBy(cars, "make");

如果你只想要红色的汽车(尽管我想你真的应该使用过滤器),那么你可以做以下

var redCars = groupedCars["red"];

使用过滤器代替

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

var redCars = _.filter(cars, function(car) { return car.colour == "red" });
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);