Использование объектов JSON в операторах if? - PullRequest
2 голосов
/ 05 апреля 2019

Я создаю сайт для своего игрового сервера и пытаюсь отобразить информацию о пользователе с помощью API Steam.

$.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, он печатает 'Owner' в .role и печатает 'Модератор, если это что-то еще.Кажется, это было бы достаточно просто, но все, что я пробую, оставляет меня с пустой страницей.Я понятия не имею, как или где я мог бы написать это в этом контексте.

Ответы [ 3 ]

3 голосов
/ 05 апреля 2019

Внутри строки шаблона допускаются только выражения, а не операторы. if является заявлением; но есть условный оператор (?:), который имеет почти такую ​​же семантику.

`...
<div class="role">${player.steamid == 'Rex4748' ? 'Owner' : 'Moderator'}</div>
...`
0 голосов
/ 05 апреля 2019

У меня недостаточно времени, чтобы проверить это с помощью 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

0 голосов
/ 05 апреля 2019

Либо вы можете объявить переменную перед оператором возврата и вызвать ссылку

let role = player.steamid == '111' ? 'Owner' : 'Moderator'

, а затем

<div class="role">${role}</div>
...