使用变量作为键从对象中获取值
Get a value from an object using a variable as a key
我有一个像这样的对象;
players: {
'1': {id:1, name:'', ....},
'2': {id:2, name:'', ....},
...
}
我想通过它的键来解构一个对象作为 currentPlayer。 (玩家编号作为道具传递)。
const currentPlayer = Object.keys(players).filter(
obj => obj.id === playerNumber
);
这没有用,我也不想使用 id
属性。
你能不能只使用 Object.values()
来实现这个?
Object.values()
将 return 您的 players
对象({id:1, name:'', ....}
等)的值作为数组。然后,您可以使用 .filter()
方法通过 playerNumber
select 播放器值。
例如,像这样:
const currentPlayer = Object.values(players).filter(
obj => obj.id === playerNumber
);
你会发现that this works in most browsers
或者,如果您组织了 players
对象以便键是玩家 ID,您可以通过以下方式访问玩家:
const currentPlayer = players[playerNumber];
Object.keys()
会给你一个键数组,而不是存储在这些键下的对象(即 Object.keys(players)
returns ['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.
获得特定球员的最简单方法是使用括号表示法:
const currentPlayer = players[playerNumber];
这假定 playerNumber
是 players
对象中的有效键。
我有一个像这样的对象;
players: {
'1': {id:1, name:'', ....},
'2': {id:2, name:'', ....},
...
}
我想通过它的键来解构一个对象作为 currentPlayer。 (玩家编号作为道具传递)。
const currentPlayer = Object.keys(players).filter(
obj => obj.id === playerNumber
);
这没有用,我也不想使用 id
属性。
你能不能只使用 Object.values()
来实现这个?
Object.values()
将 return 您的 players
对象({id:1, name:'', ....}
等)的值作为数组。然后,您可以使用 .filter()
方法通过 playerNumber
select 播放器值。
例如,像这样:
const currentPlayer = Object.values(players).filter(
obj => obj.id === playerNumber
);
你会发现that this works in most browsers
或者,如果您组织了 players
对象以便键是玩家 ID,您可以通过以下方式访问玩家:
const currentPlayer = players[playerNumber];
Object.keys()
会给你一个键数组,而不是存储在这些键下的对象(即 Object.keys(players)
returns ['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.
获得特定球员的最简单方法是使用括号表示法:
const currentPlayer = players[playerNumber];
这假定 playerNumber
是 players
对象中的有效键。