简体   繁体   中英

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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM