获取具有特定属性的对象列表

时间:2013-02-12 17:28:34

标签: javascript jquery arrays search object

我有一个名为playerResults的数组,每个索引都是一个玩家名称,每个都是playerObj个对象。每位玩家都有一个属性namebracket

有没有办法搜索playerResults并返回所有具有特定括号的对象?

我正在使用javascript来使用jquery。

编辑:这是代码:

        function showBracket(groupID) {
        //console.log(playerResults);
        var matching = playerResults.filter(function(player) {
            console.log(player.bracket);
            return player.bracket == 1; // or so
        });            

我的playerResults看起来像这样:

console.log(playerResults)
[Tiger Woods: playerObj, Phil Mickelson: playerObj, Dustin Johnson: playerObj, Zach Johnson: playerObj, Brandt Snedeker: playerObj…]
Brandt Snedeker: playerObj
    addWin: function addWin() {
    bracket: 3
    getBracket: function getBracket() {
    getWins: function getWins() {
    name: "Brandt Snedeker"
    setBracket: function setBracket(bracketNumber) {
    wins: 0
    __proto__: playerObj
Charles Howell III: playerObj
Dustin Johnson: playerObj
Hunter Mahan: playerObj

抱歉这个烂摊子,希望这有点道理。

2 个答案:

答案 0 :(得分:1)

您要找的是filter array method

var matching = playerResults.filter(function(player) {
    return isSpecificGroupNumber(player.name, player.bracket); // or so
});

但是,旧版浏览器不支持此方法,如果要支持这些方法,可能需要进行填充。或者使用jQuery.grep

答案 1 :(得分:1)

你可以编写自己的函数来做,但我会推荐underscore.js,这是一个介绍LINQ类投影和映射函数的库。

安装完成后,您可以使用过滤功能“查询”数组:

var playerResults = [
    { name: "blah", bracket:"one"},
    { name: "blah2", bracket:"three"},
    { name: "blah3", bracket:"two"},
    { name: "blah4", bracket:"one"}
];
var bracketOne = _.filter(playerResults, function(o) {
    return o.bracket == "one";
}); 

我为你准备了一个jsFiddle:

http://jsfiddle.net/ye9kd/

使用数组和对象时,下划线中有许多有用的函数 - _.filter()只是其中之一。