Получить значение из объекта, используя переменную в качестве ключа - PullRequest
0 голосов
/ 30 августа 2018

У меня есть объект типа;

  players: {
    '1': {id:1, name:'', ....},
    '2': {id:2, name:'', ....},
     ... 
   }

Я хочу удалить объект по его ключу в качестве currentPlayer. (номер игрока передается как реквизит).

const currentPlayer = Object.keys(players).filter(
      obj => obj.id === playerNumber
    );

это не сработало, также я не хочу использовать атрибут id.

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Object.keys() даст вам массив ключей, а не объект, хранящийся под этими ключами (т.е. Object.keys(players) возвращает ['1', '2', ...]).

Если вы хотите получить объекты, вы можете отобразить массив результатов следующим образом:

// Use map to turn the array of keys into the array of objects
const currentPlayer = Object.keys(players).map(id => players[id])
  // be careful: filter returns an array, but you probably just want the one object
  .filter(obj => obj.id === playerNumber)[0]

В зависимости от того, на что вы нацеливаетесь, вы также можете иметь доступ к Object.values(), который делает то же самое (то есть вы бы заменили первую строку просто на Object.values(players)), просто имейте в виду, что поддержка браузера чуть более ограничен .

0 голосов
/ 30 августа 2018

Самый простой способ получить конкретного игрока с помощью скобок:

const currentPlayer = players[playerNumber];

Предполагается, что playerNumber является действительным ключом в players объекте.

0 голосов
/ 30 августа 2018

Не могли бы вы просто использовать Object.values() для достижения этой цели?

Object.values() вернет значения вашего players объекта ({id:1, name:'', ....} и т. Д.) В виде массива. Затем вы можете использовать метод .filter(), чтобы выбрать значение игрока с помощью playerNumber.

Так, например, что-то вроде этого:

const currentPlayer = Object.values(players).filter(
  obj => obj.id === playerNumber
);

Вы найдете , что это работает в большинстве браузеров

Альтернативно, если ваш players объект организован так, что ключи являются идентификаторами игроков, вы можете получить доступ к игроку следующим образом:

const currentPlayer = players[playerNumber];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...