(注意mods:这不是'最快的扁平/非扁平嵌套JSON对象的方法'的副本,所提出的问题有些不同)
我需要将基于字符串的数据层次表示转换为嵌套的javascript对象表示。
我认为lodash/collection/reduce
可能有用。但是,改变/减少像这样的格式的最佳方法是什么;
{
"a/b/c": 1,
"a/b/d": 1,
"e/f/g/h": 1,
"e/f/g/i/j": 1
}
这样的事情?
{
"a": {
"b": {
"c": 1,
"d": 1
}
},
"e": {
"f": {
"g": {
"h": 1,
"i": {
"j": 1
}
}
}
}
}
答案 0 :(得分:2)
split和reduce使用原生javascript(对不起,不太熟悉lodash)
var testObject = {
"a/b/c": 1,
"a/b/d": 1,
"e/f/g/h": 1,
"e/f/g/i/j": 1
};
var targetObject = {}
Object.keys(testObject).forEach(function(currentKey) {
var currentValue = testObject[currentKey];
currentKey.split('/').reduce(function(generatedObject, generatedKey, currentIndex, array) {
if (!generatedObject[generatedKey]) {
generatedObject[generatedKey] = {};
}
if (currentIndex == array.length - 1) {
generatedObject[generatedKey] = currentValue;
}
return generatedObject[generatedKey];
}, targetObject);
});
console.log(targetObject);