例如,我希望在嵌套对象链的末尾创建一个对象,例如:
window.a.b.c.d = {}
但我需要检查参数 a、b 和 c 是否存在,否则创建它们。 据我所知,你需要这样做:
window.a = window.a || {};
window.a.b = window.a.b || {};
window.a.b.c = window.a.b.c || {};
window.a.b.c.d = {};
是否有更快/更好(“单行”)的方法?
最佳答案
您可以按如下方式编写对象:
window.a = {
b: {
c: {
d: {
}
}
}
};
但是当您想在现有对象上执行此操作时,最好编写一个函数。
示例:
/**
* Create object(s) in a object.
*
* @param object obj
* @param array path
*/
function createObjectPath(obj, path) {
var currentPath = obj;
// Iterate objects in path
for(var i = 0, p; p = path[i]; i++) {
// Check if doesn't exist the object in current path
if(typeof currentPath[p] !== 'object') {
currentPath[p] = {};
}
currentPath = currentPath[p];
}
}
你可以这样使用这个函数:
createObjectPath(window, ['a', 'b', 'c', 'd']);
该函数在第一个参数中创建参数对象的引用,然后迭代第二个参数中参数数组中的每个字符串,并将每个字符串设置为父对象中不存在的对象情况。
关于javascript - 嵌套短路对象的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37971706/