javascript - 使用 javascript 进行 JSON 重构(合并内容)

标签 javascript jquery json

你能给我一些指导,告诉我如何用 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/

相关文章:

javascript - 比较数字 - 异常行为

javascript - 如何在 Javascript 中将数组转换为对象?

javascript - d.source 是什么? [文档指的是其本身]

javascript - 如何使用 codeinighter 和 ajax 检查用户表中是否存在电子邮件

javascript - 使用jquery为rails生成button_to标签

javascript - 合并数组中具有相同属性值的对象

ios - 在 Swift 中过滤字典的 NSArray

相当于@SuppressWarnings的Javascript?

javascript - Jquery .empty() 前 2 个元素

json - 括号: Custom Theme