使用 Javascript 访问 JSON 时使用 indexOf
use indexOf when accessing JSON with Javascript
如果只给出部分标识符,我可以在循环遍历解析的 Json 输出时使用 indexOf 来查找特定对象吗?
基本上我打电话给 Betfair API 来获取 selectionIds 但有时我只有玩家的姓氏而不是 json 响应提供的全名。我想我需要这样的东西,但无法弄清楚。 Json 数据是
var response = { jsonrpc: '2.0',
result:
[ { marketId: '1.118739296',
marketName: 'Match Odds',
marketStartTime: '2015-05-13T01:00:00.000Z',
totalMatched: 17,
runners:
[ { selectionId: 7750118,
runnerName: 'Makoto Ninomiya',
handicap: 0,
sortPriority: 1,
metadata: { runnerId: '7750118' } },
{ selectionId: 7659425,
runnerName: 'Su Jeong Jang',
handicap: 0,
sortPriority: 2,
metadata: { runnerId: '7659425' } } ],
eventType: { id: '2', name: 'Tennis' },
competition: { id: '7354189', name: 'ITF Women Kurume 2015' },
event:
{ id: '27442711',
name: 'Ninomiya v Jang',
countryCode: 'JP',
timezone: 'Japan',
openDate: '2015-05-13T01:00:00.000Z' } } ],
id: 1 }
代码是
for (var i = 0; i<= Object.keys(response.result).length; i++ ) {
if(response.result[0].runners[i].runnerName == 'Su Jeong Jang'){
document.body.innerHTML = response.result[0].runners[i].selectionId;
}
}
这会发现 selectionID 很好,但如果我只使用这样的姓氏,我就找不到匹配项
for (var i = 0; i<= Object.keys(response.result).length; i++ ) {
if(response.result[0].runners[i].runnerName.indexOf('Su Jeong') >0 {
document.body.innerHTML = response.result[0].runners[i].selectionId;
}
}
任何人都可以指出我正确的方向吗?
非常感谢。
您的问题是您正在使用 > 0
。但是,indexOf
会找到您在第一个位置使用的姓氏,return 0
。请改用 > -1
或 >= 0
。
如果只给出部分标识符,我可以在循环遍历解析的 Json 输出时使用 indexOf 来查找特定对象吗?
基本上我打电话给 Betfair API 来获取 selectionIds 但有时我只有玩家的姓氏而不是 json 响应提供的全名。我想我需要这样的东西,但无法弄清楚。 Json 数据是
var response = { jsonrpc: '2.0',
result:
[ { marketId: '1.118739296',
marketName: 'Match Odds',
marketStartTime: '2015-05-13T01:00:00.000Z',
totalMatched: 17,
runners:
[ { selectionId: 7750118,
runnerName: 'Makoto Ninomiya',
handicap: 0,
sortPriority: 1,
metadata: { runnerId: '7750118' } },
{ selectionId: 7659425,
runnerName: 'Su Jeong Jang',
handicap: 0,
sortPriority: 2,
metadata: { runnerId: '7659425' } } ],
eventType: { id: '2', name: 'Tennis' },
competition: { id: '7354189', name: 'ITF Women Kurume 2015' },
event:
{ id: '27442711',
name: 'Ninomiya v Jang',
countryCode: 'JP',
timezone: 'Japan',
openDate: '2015-05-13T01:00:00.000Z' } } ],
id: 1 }
代码是
for (var i = 0; i<= Object.keys(response.result).length; i++ ) {
if(response.result[0].runners[i].runnerName == 'Su Jeong Jang'){
document.body.innerHTML = response.result[0].runners[i].selectionId;
}
}
这会发现 selectionID 很好,但如果我只使用这样的姓氏,我就找不到匹配项
for (var i = 0; i<= Object.keys(response.result).length; i++ ) {
if(response.result[0].runners[i].runnerName.indexOf('Su Jeong') >0 {
document.body.innerHTML = response.result[0].runners[i].selectionId;
}
}
任何人都可以指出我正确的方向吗? 非常感谢。
您的问题是您正在使用 > 0
。但是,indexOf
会找到您在第一个位置使用的姓氏,return 0
。请改用 > -1
或 >= 0
。