1
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 で動作するはずですが、動作しません (無限ループ、ばかげた間違いである必要がありますが、表示されません)。

そして、もっと簡単な方法があるに違いないと確信しています

4

1 に答える 1