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