从拆分字符串创建对象

时间:2016-07-06 05:54:49

标签: javascript json

我需要你们的帮助。我需要从splitted string创建一个对象。让我告诉你我的代码和解释,希望你们能帮助我。 所以这是我目前的代码

for(d in data){
    var item = d.split('_');
    console.log(item + "  " + data[d]);
    if(item[0] == 'partnerX'){
      //Rest of the code goes here
    }else if(item[0] == 'partnerY'){
      //Rest of the code goes here
    }
}

我的console.log(d + " " + data[d]) for for循环是

partnerX_row1_id      10101010
partnerX_row10_id     79899899

我的console.log(d.split('_') + data[d])

partnerX,row1,id      10101010
partnerX,row10,id     79899899
partnerX,row11,id     99999999
partnerX,row1,name    test13
partnerX,row10,name   test10
partnerX,row11,name   test1
partnerY,row1,id      10101010
partnerY,row10,id     79899899
partnerY,row11,id     99999999
partnerY,row1,name    test12
partnerY,row10,name   test77
partnerY,row11,name   test889

我的问题是最终结果应该是这样的,但我只是无法弄清楚如何正确循环数据,然后将其推送到数组并将数组转换为对象或直接创建对象,这看起来像这个。

{
    "partnerx": {
        "partnerx_row1" : {
            "id": 3456788,
            "name": "creditor 1"
        },
        "partnerx_row10" : {
            "id": 79899899,
            "name": "test10"
        },
        "partnerx_row11" : {
            "id": 99999999,
            "name": "test1"
        }
    },
    "partnery": {
        "partnery_row1" : {
            "id": 10101010,
            "name": "test12"
        },
        "partnery_row10" : {
            "id": 79899899,
            "name": "test77"
        },
        "partnery_row11" : {
            "id": 99999999,
            "name": "test889"
        }
    }
}

我希望你们能帮助我。如果您需要任何其他信息,请告诉我,我会提供。提前谢谢

1 个答案:

答案 0 :(得分:1)

这是代码。结果存储在obj。

obj = {};
for(d in data) {
   var item = d.split('_');
   item[0] = item[0].toLowerCase();
   if (obj[item[0]] == undefined) {
       obj[item[0]] = {};
   }
   if (obj[item[0]][item[0] + "_" + item[1]] == undefined) {
       obj[item[0]][item[0] + "_" + item[1]] = {};
   }
   obj[item[0]][item[0] + "_" + item[1]][item[2]] = data[d];
}