0

我有一个名为 的数组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

对不起,一团糟,希望这是有道理的。

4

2 回答 2

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() 只是其中之一。

于 2013-02-12T17:35:08.140 回答
1

您正在寻找的是filter数组方法

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

但是,旧浏览器不支持此方法,如果您想支持它们,可能需要填充。或使用jQuery.grep.

于 2013-02-12T17:31:46.433 回答