我正在使用Javascript从API加载有关NBA游戏的数据,我想操纵它但是遇到了麻烦。每个游戏都是自己独立的对象,数据的返回方式如下:
Date: "Nov 7, 2014"
Opponent: "@ Charlotte"
Result: "L"
Score: "122-119"
Spread: "+1.5"
根据球队是回家还是离开,在该特定比赛的对手名称前面有“@”或“vs”。我想摆脱这个,所以“对手”键只有“夏洛特”作为上述例子中的值。
我尝试过使用gameLog[i].Opponent = (gameLog[i].Opponent.split(" ").pop
在空间之前摆脱任何角色,但是如果有一个团队名称,其中有一个空格,如“纽约”或“洛杉矶”,这会破坏数据
答案 0 :(得分:0)
这将获取字符串,并从第一个空格的索引处开始创建一个新的子字符串。例如:
@ New York =在@之后开始的新字符串。 - >纽约
gameLog[i].Opponent = gameLog[i].Opponent.substr(gameLog[i].Opponent.indexOf(' ')+1);
答案 1 :(得分:0)
我想,沿着这些方向的东西可能会有所帮助。
var home = "@ Charlotte";
var opponent = "vs New York";
function parse(team){
// Case when it is a home team
if ( team.indexOf("@") === 0 ){
return team.replace("@","").trim();
// Away team
} else {
return team.replace("vs","").trim();
}
}
console.log( parse(home) );
console.log( parse(opponent) );
答案 2 :(得分:0)
gameLog[i].Opponent = (gameLog[i].Opponent.split(" ").slice(1).join(" "));
答案 3 :(得分:0)
您需要substr()
方法:
var str = "@ Charlotte";
var res = str.substr(2);
结果:Charlotte
除非在“vs”之后还有空格,否则不明确。
然后你可以使用:
var str = "@ Charlotte";
var res = str.substr(str.indexOf(' ')+1);
答案 4 :(得分:0)
您可以使用正则表达式在循环对象数组时替换不需要的字符。
for (var i = 0; i < arr.length; i++) {
arr[i].Opponent = arr[i].Opponent.replace(/@\s|vs\s/g, '');
}
这里是jsbin