我有一个映射对象,其中属性和Value如下所示:
var obj = {
key: "key1.key2.key3.key4"
};
如何将obj
转换为嵌套的javascript对象,如下所示:
var returnObj = {
key1: {
key2: {
key3:{
key4: {
"value": key
}
}
}
}
};
答案 0 :(得分:2)
您可以迭代键,然后将字符串拆分为单个属性。然后创建对象(如果不存在)。稍后将原始密钥指定为值。
function convert(object) {
var result = {};
Object.keys(object).forEach(function (k) {
object[k].split('.').reduce(function (o, k) {
return o[k] = o[k] || {};
}, result).value = k;
});
return result;
}
var obj = { key: "key1.key2.key3.key4" };
console.log(convert(obj));
.as-console-wrapper { max-height: 100% !important; top: 0; }
将最后一个键作为键。
function convert(object) {
var result = {};
Object.keys(object).forEach(function (k) {
var path = object[k].split('.'),
last = path.pop();
path.reduce(function (o, k) {
return o[k] = o[k] || {};
}, result)[last] = k;
});
return result;
}
var obj = { key: "key1.key2.key3.key4" };
console.log(convert(obj));
.as-console-wrapper { max-height: 100% !important; top: 0; }