簡體   English   中英

使用下划線groupby按顏色分組汽車數組

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

我有一系列汽車。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM