我有一个键列表和一个值。例如:
keys = ["keyA", "keyB", "keyC"];
value = 100;
我正在尝试创建一个函数来创建地图,以便:
map["keyA"]["keyB"]["keyC"] = 100;
根据这里给出的答案,我认为这是最好的数据结构:
无论如何,给我带来挑战的部分是我需要一个可以为任意数量的键创建映射的函数。我尝试过循环执行此操作,但由于我不知道如何访问地图的不同级别而无法使其正常工作,但是它也很草率:
for(var i=0; i<keys.length; i++){
for(var j=0; j<i; j++){
maps[keys[0]]...[keys[j]] = {};
if(j+1 === i){
maps[keys[0]]...[keys[j]][keys[i]] = value;
}
}
}
如何创建地图?
您可以尝试存储对最后创建的内部对象的引用,并进行更深的循环,以使其在线性时间内:
// Input data:
var keys = ["keyA", "keyB", "keyC", "keyD", "keyE"];
var value = 100;
// Algorithm:
var result = {};
var last = result;
for (var i = 0; i < keys.length - 1; i++)
{
last = (last[keys[i]] = {});
// can be change to a two-liner:
// last[keys[i]] = {};
// last = last[keys[i]];
}
last[keys[keys.length - 1]] = value;
// Output:
document.body.innerHTML = JSON.stringify(result);
document.body.innerHTML += "<br/><br/>" + result["keyA"]["keyB"]["keyC"]["keyD"]["keyE"];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句