[英]javascript object reference by array
How can I refer to an object element dynamically during a loop by using an array, something like this: 如何在循环中使用数组动态引用对象元素,如下所示:
var obj = {};
var lvl = ['x','y','z'];
var ol = [];
for (var l in lvl){
ol.push( lvl[l] )
obj[ol] = 'someval'
}
so where the reference may be obj[x][y][z] so each time the loop iterates, an additional key reference is appended, but I do not know how many levels there will be. 因此引用可能是obj [x] [y] [z],因此每次循环迭代时,都会附加一个附加的键引用,但是我不知道会有多少级。
Not sure if I have explained that very well ?! 不知道我是否解释得很好?!
Based on how you answered my comment I believe this code will provide the nested object structure you are looking for. 根据您对我的评论的回答方式,我相信这段代码将提供您要查找的嵌套对象结构。
var obj = {};
var lvl = ['x','y','z'];
var ol = {};
for (var i = 0; i < lvl.length; i++){
obj[i] = {};
ol = obj[key];
}
You mean you want someval
to be the value of obj.xyz
? 你的意思是你想
someval
是价值obj.xyz
? You can always refer to the newly created levels using a variable: 您始终可以使用变量来引用新创建的级别:
var obj = {};
var levels = ['x','y','z'];
var pointer = obj;
for (var l=0; l<levels.length; l++) {
key = levels[l];
if (l < levels.length-1) { // if not last element
pointer[key] = {};
pointer = pointer[key];
}
else { // if last element
pointer[key] = 'someval';
}
}
console.log(obj); // should log {x:{y:{z:"someval"}}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.