在 'if' 语句中使用 JSON 对象?
Using JSON objects in 'if' statements?
我正在为我的游戏服务器创建一个站点,我正在尝试使用 Steam API 显示用户信息。
$.getJSON('/steamapi', function(data) {
document.getElementById("staff-inner").innerHTML = `${data.response.players.map(function(player) {
return `
<div class="player player-${player.steamid}">
<div class="name">${player.personaname}</div>
<div class="avatar"><img src="${player.avatarfull}"></div>
<div class="role"></div>
</div>
`;
}).join('')}`;
});
以上代码运行良好。但是,我想做的(我认为这是最好的方法)是创建一个 if 语句,说明如果 ${player.steamid} 是我的 Steam ID,它会在 .role 中打印 'Owner' , 并打印 'Moderator' 如果是其他任何内容。看起来这很简单,但我尝试的一切都给我留下了空白页。我不知道在这种情况下如何或在哪里写它。
在模板字符串中,只允许使用表达式,不能使用语句。 if
是一个语句;但是条件运算符 (?:
) 具有几乎相同的语义。
`...
<div class="role">${player.steamid == 'Rex4748' ? 'Owner' : 'Moderator'}</div>
...`
您可以在 return 语句之前声明一个变量并调用引用
let role = player.steamid == '111' ? 'Owner' : 'Moderator'
然后
<div class="role">${role}</div>
我没有足够的时间用 steamAPI 对此进行测试,但我认为它会起作用:
const appDiv = document.getElementById('app');
const my_steam_id = 'Rex4748';
const players = [{
steamid: 'Rex4748',
avatarfull: 'https://fakeimg.pl/50/',
personaname: 'Joe Perez'
},{
steamid: 'notYou',
avatarfull: 'https://fakeimg.pl/50/',
personaname: 'NewGuy'
}]
function getPlayers(){
let info_collected = [];
players.map((player)=> {
console.log(player.steamid);
info_collected.push(`
<div class="player player-${player.steamid}">
<div class="name">
${player.personaname}
</div>
<div class="avatar">
<img src="${player.avatarfull}">
</div>
<div class="role">
${player.steamid == my_steam_id ?
'Owner' :
'Moderator'}
</div>
</div>
<hr>
`);
})
return info_collected.join('');
}
appDiv.innerHTML = getPlayers();
笔数:https://stackblitz.com/edit/using-json-objects-in-if-statements
我正在为我的游戏服务器创建一个站点,我正在尝试使用 Steam API 显示用户信息。
$.getJSON('/steamapi', function(data) {
document.getElementById("staff-inner").innerHTML = `${data.response.players.map(function(player) {
return `
<div class="player player-${player.steamid}">
<div class="name">${player.personaname}</div>
<div class="avatar"><img src="${player.avatarfull}"></div>
<div class="role"></div>
</div>
`;
}).join('')}`;
});
以上代码运行良好。但是,我想做的(我认为这是最好的方法)是创建一个 if 语句,说明如果 ${player.steamid} 是我的 Steam ID,它会在 .role 中打印 'Owner' , 并打印 'Moderator' 如果是其他任何内容。看起来这很简单,但我尝试的一切都给我留下了空白页。我不知道在这种情况下如何或在哪里写它。
在模板字符串中,只允许使用表达式,不能使用语句。 if
是一个语句;但是条件运算符 (?:
) 具有几乎相同的语义。
`...
<div class="role">${player.steamid == 'Rex4748' ? 'Owner' : 'Moderator'}</div>
...`
您可以在 return 语句之前声明一个变量并调用引用
let role = player.steamid == '111' ? 'Owner' : 'Moderator'
然后
<div class="role">${role}</div>
我没有足够的时间用 steamAPI 对此进行测试,但我认为它会起作用:
const appDiv = document.getElementById('app');
const my_steam_id = 'Rex4748';
const players = [{
steamid: 'Rex4748',
avatarfull: 'https://fakeimg.pl/50/',
personaname: 'Joe Perez'
},{
steamid: 'notYou',
avatarfull: 'https://fakeimg.pl/50/',
personaname: 'NewGuy'
}]
function getPlayers(){
let info_collected = [];
players.map((player)=> {
console.log(player.steamid);
info_collected.push(`
<div class="player player-${player.steamid}">
<div class="name">
${player.personaname}
</div>
<div class="avatar">
<img src="${player.avatarfull}">
</div>
<div class="role">
${player.steamid == my_steam_id ?
'Owner' :
'Moderator'}
</div>
</div>
<hr>
`);
})
return info_collected.join('');
}
appDiv.innerHTML = getPlayers();
笔数:https://stackblitz.com/edit/using-json-objects-in-if-statements