我有一个对象Player,它具有不同轮次的不同属性,例如round_1,round_2,..,round_7。我想根据整数,圆值给它们值。
我认为可行的功能是:
//voor = round in Estonian
function valiVoor(player, r){
if (r == 1){
return player.voor_1;
}
else if (r == 2){
return player.voor_2;
}
else if (r == 3){
return player.voor_3;
}
else if (r == 4){
return player.voor_4;
}
else if (r == 5){
return player.voor_5;
}
else if (r == 6){
return player.voor_6;
}
else if (r == 7){
return player.voor_7;
}
}
虽然呼唤功能:
valiVoor(player_one,1) = "asd";
不会更改属性player_one.voor_1 =" asd"。我应该使用数组还是有其他选择来解决这个问题?
答案 0 :(得分:5)
您可以使用Bracket notation:
player['voor_' + r] = 'asd'; //Equivalent to player.voor_# where # is the number r
如果你想在分配之前检查属性是否存在(否则如果r
发疯,那么你的player
对象就会疯狂):
if(player.hasOwnProperty('voor_' + r)) {
//Do stuff
}
Object.prototype.hasOwnProperty
见MDN link。
答案 1 :(得分:1)
function valiVoor(player, r){
return player['voor_'+r];
}
一个二传手:
function setValiVoor(player, r, value){
player['voor_'+r] = value;
}
答案 2 :(得分:0)
您也可以使用方括号访问对象属性,就像数组一样。
function getValiVoor(player, r){
return player['voor_' + r];
}
如果要分配值,可以将值传递给函数:
function setValiVoor(player, r, val){
player['voor_' + r] = val;
}