你能给我一些指导,告诉我如何用 javascript(可以是 jQuery)对其进行排序吗:
"A1" : { "value" : "No data", "href" : "/A1", "tooltip" : {"content" : "A1 No data"} },
"A2" : { "value" : "1111", "href" : "/A2", "tooltip" : {"content" : "A2 1111 (2013)"} },
"B1" : { "value" : "2222", "href" : "/B1", "tooltip" : {"content" : "B1 2222 (2010)"} },
"B1" : { "value" : "3333", "href" : "/B1", "tooltip" : {"content" : "B1 3333 (2009)"} },
我想实现这样的想法:
"B1" : {
"value" : {"y2009" : "3333", "y2010" : "2222"},
"href" : "/B1",
"tooltip" : {
"y2009" : {"content" : "B1 3333 (2009)"},
"y2010" : {"content" : "B1 2222 (2010)"}
}
}
最佳答案
假设您的数据是一个包含对象的数组,如下所示,您可以遍历并将所有元素分配给一个新的对象结构
var array = [{ "A1": { "value": "No data", "href": "/A1", "tooltip": { "content": "A1 No data" } } }, { "A2": { "value": "1111", "href": "/A2", "tooltip": { "content": "A2 1111 (2013)" } } }, { "B1": { "value": "2222", "href": "/B1", "tooltip": { "content": "B1 2222 (2010)" } } }, { "B1": { "value": "3333", "href": "/B1", "tooltip": { "content": "B1 3333 (2009)" } } }],
object = {};
array.forEach(function (a) {
var key = Object.keys(a)[0],
year = (/(?:\()(\d{4})(?:\))/.exec(a[key].tooltip.content) || [, 'No data'])[1];
if (!(key in object)) {
object[key] = { "value": {}, "href": a[key].href, "tooltip": {} };
}
object[key].value[year] = a[key].value;
object[key].tooltip[year] = a[key].tooltip.content;
});
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
关于javascript - 使用 javascript 进行 JSON 重构(合并内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302692/