【发布时间】:2017-02-08 21:00:35
【问题描述】:
我有一个 json 响应,我想通过递归和减少来简化这个 json 数据。我写了一个函数把我卡在了这一点上。我想删除所有数据元素并创建一个没有数据名称的新对象。
我的json数据是这样的
[
{
"city": {
"data": {
"id": 649442,
"country_id": 54,
"state_id": 682,
"city_name": "Prague",
"state_name": "Praha"
}
},
"country": {
"data": {
"id": 54,
"data": {
"country_name": "Czech Republic",
"short_country": "CZ",
"olympic_code": "CZE"
}
}
}
}
]
我的功能在这里:
function normalizeData(object) {
return Object.keys(object).reduce((finalObject, objectKey) => {
if (object[objectKey] && object[objectKey].data) {
finalObject[objectKey] = object[objectKey].data;
if (Array.isArray(finalObject[objectKey].data)) {
finalObject[objectKey] = object[objectKey].data.map(item => {
return normalizeData(item);
});
} else {
finalObject[objectKey] = normalizeData(object[objectKey].data);
}
} else {
finalObject[objectKey] = object[objectKey];
}
return finalObject;
}, {});
};
我仍然在获取数据对象。那么我在哪里犯错了。或者有更好的方法吗?
【问题讨论】:
-
欢迎来到苏谭!为了清楚起见,您希望删除某些键并获得新的、已清理的对象。正确的?但是
id=54的反对应该怎么办? -
是的,我想避免输入数据,所以 id: 54 应该是这样的 { "country": { "id": 54 } }
-
如果您可以举一个输入和预期输出的示例,这将有所帮助。谢谢。
标签: javascript json recursion reduce