我有一个对象数组。构造函数是
Planet : function(planet)
{
this.name = planet.name;
this.percComp = planet.percComp;
this.preReq = planet.preReq;
}
有没有办法使用 jquery 或下划线来获取一个或多个对象,基于 objects 参数的数组。
就像是
_getItem(planetArray, Planet.name === 'Mars')
我有一个对象数组。构造函数是
Planet : function(planet)
{
this.name = planet.name;
this.percComp = planet.percComp;
this.preReq = planet.preReq;
}
有没有办法使用 jquery 或下划线来获取一个或多个对象,基于 objects 参数的数组。
就像是
_getItem(planetArray, Planet.name === 'Mars')
这就是 jQuery 的grep
方法的用途:
var theObject = $.grep(planetArray, function (el) {
return el.name === 'mars';
})[0];
这是小提琴:http: //jsfiddle.net/g7syV/
试试下划线的where
方法
_.where(listOfPlanets, {name: "Mars"});
假设您有以下行星列表 - prop
是一个虚构的属性
var listOfPlanets = [
{ name: 'Mercury', prop:1},
{ name: 'Venus', prop:2},
{ name: 'Earth', prop:3},
{ name: 'Mars', prop:4},
{ name: 'Jupiter', prop:5},
{ name: 'Saturn', prop:6},
{ name: 'Uranus', prop:7},
{ name: 'Neptune', prop:8} ];
要获取火星对象,只需执行以下操作。请记住,它_.where
返回一个匹配数组。需要访问索引0
或使用_.first
var mars = _.where(listOfPlanets, {name: "Mars"})[0];
console.log(mars.prop); // 4
Underscore 还有一个_.find
方法,可以用来只检索第一个匹配项
var mars = _.find(listOfPlanets, function(p){ return p.name === 'Mars' });
console.log(mars.prop); // 4
JSFiddle在这里:http: //jsfiddle.net/jaimem/6bxnK/1/