数组的javascript对象引用

时间:2015-01-07 04:37:30

标签: javascript

如何通过使用数组在循环期间动态引用对象元素,如下所示:

var obj = {};
var lvl = ['x','y','z'];
var ol = [];
for (var l in lvl){
    ol.push( lvl[l] )
    obj[ol] = 'someval'
}

所以引用可能是obj [x] [y] [z]所以每次循环迭代时,会附加一个额外的键引用,但我不知道会有多少级别。

不确定我是否已经解释得那么好了?!

2 个答案:

答案 0 :(得分:1)

根据您对我的评论的回答,我相信此代码将提供您正在寻找的嵌套对象结构。

var obj = {};
var lvl = ['x','y','z'];
var ol = {};

for (var i = 0; i < lvl.length; i++){
  obj[i] = {};  
  ol = obj[key];
}

答案 1 :(得分:0)

您的意思是您希望someval成为obj.x.y.z的值?您始终可以使用变量来引用新创建的级别:

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"}}}