我想知道实现这一共同行动的更好方法是什么:
var id = 1;
var Players = [{ id: 0, other: '...'}, { id: 1, other: '...' }]
for (var i=0; i<Players.length; i++) {
if (Players[i].id == id) {
return i;
}
}
我在想Array.map,但我不知道我们是否可以访问密钥:
Players.map(function(Player) { if (Player.id == id) { return ?? } });
答案 0 :(得分:1)
取决于您的结构(并牢记性能);使它成为一个关联的对象/数组可以解决。
var object = { id: 1, other: '...' };
var Players = [];
Players[object.id] = object;
然后,您可以通过以下方式引用所需的玩家ID:
var id = 1;
var playerObject = Players[id];
请注意,在这种情况下,您不能对ID使用负值或零值。
答案 1 :(得分:1)
您还可以尝试reduce:
// The second argument is set to null so that reduce doesn't just
// start with the first object in the array
Players.reduce(function(memo, Player, key) {
return Player.id === id ? key : memo;
}, null);
答案 2 :(得分:0)
Array.map()
将索引作为第二个参数传递给回调
但是,它无法帮助您找到单个项目。
Javascript数组没有执行此操作的功能。
使用LoDash,您可以非常轻松地完成此操作:
_.findIndex(Players, { id: 4 })