![](/img/trans.png)
[英]Using underscore groupby to group an array of objects by more than one attribute
[英]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');
請注意,第二個參數可以是function
或string
。 如果它是由該屬性名稱組成的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.