我有一个像对象;
players: {
'1': {id:1, name:'', ....},
'2': {id:2, name:'', ....},
...
}
我想通过其键作为currentPlayer来描述一个对象。 (playernumber作为道具传递)。
const currentPlayer = Object.keys(players).filter(
obj => obj.id === playerNumber
);
这不起作用,我也不想使用id
属性。
获取特定玩家的最简单方法是使用括号表示法:
const currentPlayer = players[playerNumber];
这假设playerNumber
是players
对象中的有效键。
你能不能只用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
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)
。