javascript - 从一种形式的数组到另一种形式的数据转换

标签 javascript jquery arrays

我对从一种形式的数组到另一种形式的数据结构转换有疑问。

我的输入数据的形式为,

var testVar=[

{
    "count": 1,
    "term": "Company",
    "Company": [
        {
            "Tata": [
                {
                    "count": 1,
                    "term": "Tatagroup"
                }
            ],
            "sector": "Automotive",
            "type": "Car"
        },
      ]
},
{
    "count": 2,
    "term": "Country",
    "Country": [
        {
            "France": [
                {
                    "count": 1,
                    "term": "France"
                }
            ],
            "region": "Europe",
            "Player": "Zidane",
            "term": "France",
            "code": "FRA"
        },
        {
            "region": "Europe",
            "Player": "Federer",
            "term": "Switzerland",
            "Switzerland": [
                {
                    "count": 1,
                    "term": "Switzerland"
                }
            ],
            "code": "SWI"
        }
    ]
}];

我正在尝试将其转换为以下形式,

[ "Tata" : [{"sector" : "automotive"}, "type" : "car"], "France": [{"region" : "Europe}, {"Player" : "Zidane"} , {"code" : "FRA"}], "switzerland" : [{"region" : "Europe}, {"Player" : "Federer"} , {"code" : "SWI"}]];

我想出的代码看起来像 http://jsfiddle.net/X2apw/2/ ,但它不准确..

最佳答案

var testvar = [...];

var result = {};
for (var i=0; i<testvar.length; i++) {
    var arr = testvar[i][testvar[i].term];
    for (var j=0; j<arr.length; j++) {
        var resarr = [];
        for (var k in arr[j]) {
            if (typeof arr[j][k] == "string") {
                 var obj = {};
                 obj[k] = arr[j][k];
                 resarr.push(obj);
            } else {
                 result[k] = resarr;
            }
        }
    }
}

( Demo at jsfiddle.net )

但是,我强烈建议在结果格式中仅使用一个对象,而不是一组单属性对象。将内循环体更改为:

        var resobj = {};
        for (var k in arr[j]) {
            if (typeof arr[j][k] == "string") {
                 resobj[k] = arr[j][k];
            } else {
                 result[k] = resobj;
            }
        }

( Demo )

关于javascript - 从一种形式的数组到另一种形式的数据转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11790034/

相关文章:

javascript - Mocha Chai - 确认 Body 中有一个 'name' 属性

javascript - HTTP 请求成功后为 "Uncaught SyntaxError: Unexpected token <"

javascript - 如何获取元素的类型。 JavaScript/jQuery

javascript - 单击链接时在 Canvas 外侧边栏中显示 div

arrays - 如何指定返回的数组类型?

c - 将字符串插入字符串数组 c

javascript - AngularJs - 路由解析函数无法识别工厂

javascript - 单击菜单在 <div> 中打开 pdf

javascript - AngularJs 应用程序不能在 chrome 中工作但在其他浏览器中工作

c++ - 数行和模数 C++