我有一个类似的对象
players: {
'1': {id:1, name:'', ....},
'2': {id:2, name:'', ....},
...
}
我想通过其键作为currentPlayer来分离对象。 (玩家编号作为道具传递)。
const currentPlayer = Object.keys(players).filter(
obj => obj.id === playerNumber
);
这不起作用,我也不想使用id
属性。
答案 0 :(得分:2)
获得特定玩家的最简单方法是使用括号符号:
const currentPlayer = players[playerNumber];
这假定playerNumber
是players
对象中的有效密钥。
答案 1 :(得分: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
或者,如果您组织了players
对象,以便键是玩家ID,则可以通过以下方式访问玩家:
const currentPlayer = players[playerNumber];
答案 2 :(得分:0)
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)
替换第一行),请注意浏览器支持是little more limited。