返回数组键的关于其中一个包含对象的值的最佳方法

时间:2013-07-03 13:47:54

标签: javascript

我想知道实现这一共同行动的更好方法是什么:

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 ?? } });

3 个答案:

答案 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 })