0

我有一个对象数组。构造函数是

Planet : function(planet)
{
    this.name = planet.name;
    this.percComp = planet.percComp;
    this.preReq = planet.preReq;
}

有没有办法使用 jquery 或下划线来获取一个或多个对象,基于 objects 参数的数组。

就像是

_getItem(planetArray, Planet.name === 'Mars')
4

3 回答 3

2

这就是 jQuery 的grep方法的用途:

var theObject = $.grep(planetArray, function (el) {
    return el.name === 'mars';
})[0];

这是小提琴:http: //jsfiddle.net/g7syV/

于 2012-11-18T00:12:15.403 回答
2

试试下划线的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/

于 2012-11-18T00:16:41.740 回答
1

您可以使用grep

 $.grep(arr, function (obj) { return obj.name === 'Mars'; });

这将返回一个符合条件的对象数组。

于 2012-11-18T00:14:13.447 回答