我总是需要处理多级js对象,其中属性的存在不确定:
try { value1 = obj.a.b.c; } catch(e) { value1 = 1; }
try { value2 = obj.d.e.f; } catch(e) { value2 = 2; }
......
是否有更简单的方法或不需要大量 try catch 的通用函数(例如 ifnull(obj.d.e.f, 2) )?
最佳答案
var value1 = (obj.a && obj.a.b && obj.a.b.c) || 1;
http://jsfiddle.net/DerekL/UfJEQ/
或者使用这个:
function ifNull(obj, key, defVal){
var keys = key.split("."), value;
for(var i = 0; i < keys.length; i++){
if(typeof obj[keys[i]] !== "undefined"){
value = obj = obj[keys[i]];
}else{
return defVal;
}
}
return value;
}
var value1 = ifNull(obj, "a.b.c", 1);
关于javascript - 获取多级javascript对象属性的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305961/