Javascript 这种从平面(点表示法)到层次对象的转换可以改进吗?
我试图将点表示法中的平面对象(如MongoDb用于更新)转换为层次对象 例如,输入对象是: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
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()