我的字典看起来像
var p = {
'name' : "John",
'personal.phone' : "123456",
'office.phone.number' : "321654",
'office.phone.extn': "4"
}
我想用扩展名为
的虚线键转换dict{
'name' : "John",
'personal' : {
'phone' : "123456",
}
'office' : {
'phone' : {
number : "321654",
extn : "4"
}
}
我为扩展单个密钥而编写的函数。但它没有退出循环
function expdictkey(str,v) {
str = str.split(".").reverse();
var p = {}
for (var i = 0; i < str.length; i++)
{
p[str[i]] = p
console.log(p)
}
return p;
}
expdictkey( “phone.number.extn”, “4”)
我从第一个dict的形式获取来自from的值,我想将它转换为第二个dict并将其放入模型中并保存。使用backbone.js和django rest服务器。在服务器中,模型采用第二个字典的形式。
答案 0 :(得分:3)
你走了:
var p = {
'name': "John",
'personal.phone': "123456",
'office.phone.number': "321654",
'office.phone.extn': "4"
}
function unwrap() {
var obj = {};
for (var index in p) {
var keys = index.split('.');
var value = p[index];
var ref = obj;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (keys.length - 1 === i) {
ref[key] = value;
} else {
if (ref[key] === undefined) {
ref[key] = {}
}
ref = ref[key]
}
}
}
return obj;
}
unwrap(p);