要投影到多个属性,您需要map http://underscorejs.org/#map,不采摘:
var results = _.map(
_.where(people, {city : "ny"}),
function(person) {
return { firstName: person.firstName, qty: person.qty };
}
);
[{"firstName":"Thein","qty":5},{"firstName":"Michael","qty":3}]
(Fiddle) http://jsfiddle.net/Wm8YC/1/
请注意,如果您愿意,您可以创建一个辅助方法“pluckMany”,它与带有变量参数的 pluck 执行相同的操作:
// first argument is the source array, followed by one or more property names
var pluckMany = function() {
// get the property names to pluck
var source = arguments[0];
var propertiesToPluck = _.rest(arguments, 1);
return _.map(source, function(item) {
var obj = {};
_.each(propertiesToPluck, function(property) {
obj[property] = item[property];
});
return obj;
});
};
您可以使用_.mixin http://underscorejs.org/#mixin函数添加一个“pluckMany”函数_
命名空间。使用这个你可以简单地写:
var results = _.chain(people).where({city : "ny"}).pluckMany( "firstName", "qty").value();
(Fiddle) http://jsfiddle.net/Wm8YC/16/