![](/img/trans.png)
[英]How do I iterate through nested properties of an json object and create a new array list?
[英]How to iterate through a JSON Object with nested properties, manipulate and return a new object?
我有一個具有嵌套屬性的JSON對象,如下所示:
var obj = {
"a0": {
"count": 41,
"name": "Park",
"new": {
"id": 35,
"registerid": 46
}
},
"a1": {
"count": 52,
"name": "Greg",
"old": {
"id": 38,
"registerid": 49
}
},
"a2": {
"count": 150,
"name": "Sylvain",
}
}
我想遍歷整個對象,找到具有數值的屬性,並用計算值替換它們,然后返回一個新對象。
因此,如果傳遞上述JSON對象,我想將其返回為:
result = {
"a0": {
"count": 411.067,
"name": "Park",
"new": {
"id": 351.067,
"registerid": 461.067
}
},
"a1": {
"count": 521.067,
"name": "Greg",
"old": {
"id": 381.067,
"registerid": 491.067
}
},
"a2": {
"count": 150.067,
"name": "Sylvain"
}
}
還有一個類似的問題在這里 ,我以前問及有一個神話般的答案,但它不處理的巢式病例,並沒有與替換返回整個對象,但不會返回與數字對象屬性過濾的對象。
我嘗試在Object.keys()上使用forEach並在其中調用映射,但是好像我在回調函數中失去了變量作用域。
let result = Object.keys(obj).forEach(function(key, index) {
Object.keys(obj).map((key) => {
let o = obj[key];
console.log("Object is:", o);
return Object.keys(o).reduce((r, k) => typeof o[k] === 'number' ? Object.assign(r, { [k]:precise(o[k], 5) }) : r , {});
});
});
console.log(result);
誰能幫我這個忙。
謝謝。
我將使用遞歸調用:
function process(obj) {
let result = {};
Object.keys(obj).forEach(k => {
if(typeof obj[k] === 'number') {
result[k] = obj[k] += 0.067; // calculate you numeric properties here!
}
else if(typeof obj[k] === 'object') {
result[k] = process(obj[k]); // a recursive call for nested objects
}
else {
result[k] = obj[k]; // just pass an orginal value
}
}
);
return result;
}
let result = process(obj); // here the obj is the initial data object
我還創建了Plunker演示 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.