本文介绍在JavaScript中动态获取对象属性值的两种常用方法。通过示例说明直接使用obj.key无法获取动态key对应的值,推荐使用obj[key]方括号语法或eval函数拼接字符串的方式来解决该问题,并对比了两种实现的差异。
动态获取对象键值的方法
最近在处理一个实际需求时,
具体实现代码如下:
var obj = {"name1":"张三","name2":"李四"};
var key = "name1";
var value = obj.key;//得到了"undefined"
value = obj.name1;//得到了"张三" 原本期望通过动态赋值给key变量,进而获取该key对应的值。然而上述写法中,obj.key会尝试查找对象中名为"key"的属性,由于该属性不存在,因此返回undefined。
为此,考虑使用JavaScript遍历对象属性的方式:
代码如下:
function printObject(obj){
//obj = {"cid":"C0","ctext":"区县"};
var temp = "";
for(var i in obj){//用javascript的for/in循环遍历对象的属性
temp += i+":"+obj[i]+"\n";
}
alert(temp);//结果:cid:C0 \n ctext:区县
} 通过这种方式,可以清晰查看对象中每个key和value的具体内容。
回到最初的问题,如何动态给key赋值,并通过类似obj.key的形式获取对应的value?
从上述printObject函数的实现中可以得到提示,即使用obj[key]的形式。key变量可以是动态的,从而解决了前述问题。
此外,还有一种替代方案,即使用eval("obj."+key)。
总结:
在JavaScript中,根据动态key获取对象对应value主要有两种方法:
一、var key = "name1";var value = obj[key];
二、var key = "name1";var value = eval("obj."+key);