使用变量作为键从对象获取值

问题描述 投票:1回答:3

我有一个像对象;

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

我想通过其键作为currentPlayer来描述一个对象。 (playernumber作为道具传递)。

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

这不起作用,我也不想使用id属性。

javascript-objects destructuring
3个回答
2
投票

获取特定玩家的最简单方法是使用括号表示法:

const currentPlayer = players[playerNumber];

这假设playerNumberplayers对象中的有效键。


1
投票

你能不能只用Object.values()来实现这个目标吗?

Object.values()将返回players对象({id:1, name:'', ....}等)的值作为数组。然后,您可以使用.filter()方法通过playerNumber选择玩家值。

例如,像这样:

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

你会发现that this works in most browsers

或者,如果您组织了qazxsw poi对象,以便键是玩家ID,则可以通过以下方式访问玩家:

players

0
投票

const currentPlayer = players[playerNumber]; 将为您提供一系列键,而不是存储在这些键下的对象(即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)

© www.soinside.com 2019 - 2024. All rights reserved.