我有车的数组。
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; });
事实上,我相信,因为它指出这个IR更正确,如果迭代器是一个字符串,在与字符串名称的对象的属性,而不是IT部门。
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);