根据参数从数组中获取项目

时间:2012-11-18 00:11:06

标签: jquery underscore.js

我有一个对象数组。

是构造函数
Planet : function(planet)
{
    this.name = planet.name;
    this.percComp = planet.percComp;
    this.preReq = planet.preReq;
}

是否有办法使用jquery或下划线从对象或对象中获取基于对象参数的数组。

这样的东西
_getItem(planetArray, Planet.name === 'Mars')

3 个答案:

答案 0 :(得分:2)

这是jQuery的grep方法的用途:

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

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

答案 1 :(得分: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} ];

要获取Mars对象,请执行以下操作。请记住_.where会返回一系列匹配项。需要访问索引0或使用_.first

var mars = _.where(listOfPlanets, {name: "Mars"})[0];
console.log(mars.prop);    // 4

下划线还有_.find方法,可用于仅检索第一场比赛

var mars = _.find(listOfPlanets, function(p){ return p.name === 'Mars' });
console.log(mars.prop);    // 4

JSFiddle:http://jsfiddle.net/jaimem/6bxnK/1/

答案 2 :(得分:1)

您可以使用grep

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

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