在 '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