从数组中选择all,其中key:name相等

时间:2015-04-10 19:12:28

标签: javascript jquery arrays

我有var players = []数组,其中包含userIDuserScore等信息。通常我会选择players[i]这样的地方选择特定的玩家数组中的数字位置。但是对于我的应用程序的一点,我不知道这个数字,但我知道userID而我正试图弄清楚userScore数组中players的更新位置{ {1}}等于某事,让我们说userID

6 个答案:

答案 0 :(得分:1)

for(var i = 0; i < players.length; i++){
    if(players[i].userId === 'someId'){
        //doSomething(player[i]);
        players[i].userScore = 'abc_123';
    }
}

答案 1 :(得分:1)

您可以使用Array.find方法:

var players = [ { userId: 123 } ];
var user = players.find(function(item) {
    return item.userId === 123;
});

if (user != null) {
    // user is the first element in the players array that
    // satisfied the desired condition (a.k.a user.userId === 123)
}

答案 2 :(得分:1)

假设数组项是对象,您可以使用过滤器函数:

var player = players.filter(function(p)
{
    return p.userID == "something";
}).forEach(function(p) {
    p.userScore = "something";
});

答案 3 :(得分:0)

您可能希望使用Dictionary而不是数组。密钥自然可以是玩家ID。其余信息可以放在某种对象类型中。然后,您可以通过键轻松访问词典。

答案 4 :(得分:0)

您可以使用filter功能。

var findId = 'jkl';
var theGoose = players.filter(function(user){ return user.userId === findId; }).pop();

var players = [
{
  userId: 'abc',
  userInfo: 'duck'
},
{
  userId: 'def',
  userInfo: 'duck'
},
{
  userId: 'ghi',
  userInfo: 'duck'
},
{
  userId: 'jkl',
  userInfo: 'goose!'
},
{
  userId: 'mno',
  userInfo: 'duck'
}];

var findId = 'jkl';
var theGoose = players.filter(function(user){ return user.userId === findId; }).pop();
$('#debug').text( theGoose.userInfo );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="debug"></div>

答案 5 :(得分:0)

尝试使用grep:

var players = [
    {score: 10,userId: 1},
    {score: 20,userId: 2},
    {score: 30,userId: 3}
];


function findByUsrId(id){
    return $.grep(players, function(item){
      return item.userId == id;
    });
};

console.log(findByUsrId(2));

Jsfiddle:http://jsfiddle.net/pfbwq98k/