最近遇到一個(gè)問(wèn)題:
復(fù)制代碼 代碼如下:
var obj = {"name1":"張三","name2":"李四"};
var key = "name1";
var value = obj.key;//得到了"undefined"
value = obj.name1;//得到了"張三"
其實(shí)我是想動(dòng)態(tài)給key賦值,然后得到key為多少所對(duì)就的值孵滞。但這種做法行不通,obj.key會(huì)去找obj下key為"key"所對(duì)應(yīng)的值,結(jié)果當(dāng)然是找不到嘍友酱。
于是正驻,我想到了js中遍歷對(duì)象屬性的方法:
復(fù)制代碼 代碼如下:
function printObject(obj){
//obj = {"cid":"C0","ctext":"區(qū)縣"};
var temp = "";
for(var i in obj){//用javascript的for/in循環(huán)遍歷對(duì)象的屬性
temp += i+":"+obj[i]+"\n";
}
alert(temp);//結(jié)果:cid:C0 \n ctext:區(qū)縣
}
這樣渔工,就可以清楚的知道js中一個(gè)對(duì)象的key和value分別是什么了。
回到剛才的問(wèn)題陨闹,怎么動(dòng)態(tài)給key賦值,然后以obj.key的方式得到對(duì)應(yīng)的value呢薄坏?
其實(shí)以上printObject中有提示趋厉,那就是用obj[key]的方法,key可以是動(dòng)態(tài)的胶坠,這樣就解決了我上面提出的問(wèn)題了君账。
最后說(shuō)一下,還有一個(gè)方法也可以沈善,那就是:eval("obj."+key)乡数。
總結(jié):
js中想根據(jù)動(dòng)態(tài)key得到某對(duì)象中相對(duì)應(yīng)的value的方法有二:
一椭蹄、var key = "name1";var value = obj[key];
二、var key = "name1";var value = eval("obj."+key);