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