[英]Create json from object where keys contain '.'
我該如何轉換
{'Address.street': 's street',
'Address.streetNum': 's street num',
'Address.npa': 'npa',
'Address.city': 's city',
'Address.country': 's country'}
到
{
Address:{
street: 's street',
streetNum: 's street num'
npa: 'npa'
city: 's city',
country: 's country'
}
}
我使用 nodejs (v10.12.0) 作為后端。
我已經嘗試使用lodash
pick
,但沒有按預期工作。
任何的想法 ?
為此創建空白數組然后分配空白對象然后將對象推入數組
let address=[]
let object=Object.assign({});
object.street='s street';
object.streetNum='s street num'
....
address.push(object)
you can console.log(address)
you will achieve the result
對於更通用的解決方案,這是我很快寫下的內容:
var unflatten = function unflatten(obj) {
var ret = {};
//for each flattened key in our original object
for(var key in obj) {
if(obj.hasOwnProperty(key)) {
//split each key into parts separated by '.'
var parts = key.split('.');
//keep the last part separate, we'll need it assign our value
var lastPart = parts.pop();
//keep a reference to the current child object
var parent = ret;
//for each part in our key
for(var i = 0; i < parts.length; i++) {
var part = parts[i];
//only create a new object if it doesn't exist
if(!parent[part])
parent[part] = {};
//reassign our parent to go one level deeper
parent = parent[part];
}
//finally, assign our original value
//note that this will overwrite whatever's already there
parent[lastPart] = obj[key];
}
}
return ret;
};
//usage:
var obj = {
'foo.bar.baz': 1,
'foo.qux': 2
};
unflatten(obj);
//returns { foo: { bar: { baz: 1 }, qux: 2 } }
另請參閱@str 對其他解決方案/討論的評論
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.