我有一个名为playerResults
的数组,每个索引都是一个玩家名称,每个都是playerObj
个对象。每位玩家都有一个属性name
和bracket
。
有没有办法搜索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
抱歉这个烂摊子,希望这有点道理。
答案 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:
使用数组和对象时,下划线中有许多有用的函数 - _.filter()只是其中之一。