我必须访问对象的属性:
var jsonobj= {
"first": {
"second": 120
}
}
如何检查是否second
可用?如果我们在这里检查,则jsonobj.hasOwnProperty()
返回。false
如果我想将值second
从 120 更改为 100,我该如何实现呢?我可以得到一个通用的解决方案,以便它适用于任意数量的层次结构吗?
编辑:如果我不知道房产名称怎么办?
我必须访问对象的属性:
var jsonobj= {
"first": {
"second": 120
}
}
如何检查是否second
可用?如果我们在这里检查,则jsonobj.hasOwnProperty()
返回。false
如果我想将值second
从 120 更改为 100,我该如何实现呢?我可以得到一个通用的解决方案,以便它适用于任意数量的层次结构吗?
编辑:如果我不知道房产名称怎么办?
如果您想检查嵌套属性 [key] 的 [唯一路径] 是否存在,此功能可能会有所帮助:
function keyPathExists(obj,keypath){
var keys = keypath.split('.'), key, trace = obj;
while (key = keys.shift()){
if (!trace[key]){
return null
};
trace = trace[key];
}
return true;
}
//usages
var abcd = {a:{b:{c:{d:1}}}};
keyPathExists(abcd,'a.b.c.d'); //=> 1
keyPathExists(abcd,'a.b.c.d.e'); //=> null
if (keyPathExists(abcd,'a.b.c.d')){
abcd.a.b.c.d = 2;
}
使用typeof
:
if(typeof jsonobj.first == 'undefined'){
jsonobj.first = {};
}
if(typeof jsonobj.first.second == 'undefined'){
jsonobj.first.second = {};
}
jsonobj.first.second = 100;
要更改值,您可以使用“点”表示法 - 所以尝试:jsonobj.first.second = 100
var jsonobj= {
"first": {
"second": 120
}
}
alert(jsonobj.first.second);
jsonobj.first.second = 100
alert(jsonobj.first.second);