var keys1 = ["foo", "moreFoo"],
value1 = "bar",
keys2 = ["foo", "ultraFoo"],
value2 = "bigBar";
オブジェクトを構築する関数を作成したいと思います:
object {
foo : {moreFoo: "bar", ultraFoo: "bigBar"}
}
私は自分の配列のそれぞれを取り、次のことをすることを考えました:
function recursiveObjectBuild(object, keys, value) {
var index = 0;
function loop(object, index) {
var key = keys[index];
//Property exists, go into it
if (key in object) {
loop(object[key], ++index);
//Property doesn't exist, create it and go into it
} else if (index < keys.length-1) {
object[key] = {};
loop(object[key], ++index);
//At last key, set value
} else {
object[key] = value;
return object;
}
}
return loop(object, 0);
}
これは IMO で動作するはずですが、動作しません (無限ループ、ばかげた間違いである必要がありますが、表示されません)。
そして、もっと簡単な方法があるに違いないと確信しています