Javascript 这种从平面(点表示法)到层次对象的转换可以改进吗?

Javascript 这种从平面(点表示法)到层次对象的转换可以改进吗?,javascript,syntax,data-conversion,Javascript,Syntax,Data Conversion,我试图将点表示法中的平面对象(如MongoDb用于更新)转换为层次对象 例如,输入对象是: var flat = { "a": 123, "b.c": "234", "b.d.e": 345 } 当前转换代码为: var obj = {}; var parent = obj; Object.keys(flat).forEach(function(key) { var subkeys = key.split('.'); var last = subkeys

我试图将点表示法中的平面对象(如MongoDb用于更新)转换为层次对象

例如,输入对象是:

var flat = {
    "a": 123,
    "b.c": "234",
    "b.d.e": 345
}
当前转换代码为:

var obj = {};
var parent = obj;
Object.keys(flat).forEach(function(key) {
    var subkeys = key.split('.');
    var last = subkeys.pop();
    subkeys.forEach(function(subkey) {
        parent[subkey] = typeof parent[subkey] === 'undefined' ? {} : parent[subkey];
        parent = parent[subkey];
    });
    parent[last] = flat[key];
    parent = obj;
});

有更好的方法(JS技巧)吗?

“IE8不支持
数组。splice
”-是的。但是,如果要删除最后一个元素
。pop()