如果我想在多维对象中创建一个新节点,我必须在添加之前检查父对象是否存在。例如
if(typeof root_object["object1"] == "undefined")
root_object["object1"] = [];
if(typeof root_object["object1"]["object2"] == "undefined")
root_object["object1"]["object2"] = [];
root_object["object1"]["object2"]["object3"] = something_or_other;
是否有一种更简单,更简洁的方法来实现这一目标?
答案 0 :(得分:1)
Javascript不会自动为您执行此操作,但您可以编写执行此操作的函数:
function add_hier(obj,path,value) {
var n=path.length;
for (var i=0; i<n-1; ++i) {
var field = path[i];
if (!(field in obj)) { obj[field] = []; }
obj = obj[field];
}
obj[path[n-1]] = value;
}
add_hier(root_object, ["object1","object2","object3"], something_or_other);
(危险:完全未经测试的代码;可能完全由错误,语法错误和放射性废物组成。请谨慎使用。)