操作JavaScript数组

Manipulate JavaScript Array

本文关键字:数组 JavaScript 操作      更新时间:2023-09-26

我希望你能帮助我。如何转换这个平面JavaScript数组,来自:

[{"state":"First state","district":"First district","local_district_id":1,"zone_id":117,"center_id":"A","cente_name":"Voting center First"},{"state":"First state","district":"First district","local_district_id":2,"zone_id":117,"center_id":"B","cente_name":"Voting center Second"},{"state":"First state","district":"First district","local_district_id":6,"zone_id":117,"center_id":"C","cente_name":"Voting center Third"},]

插入嵌套数组,如下所示:

[{"state":"First state","儿童":[{"district_name":"第一区","儿童":[{"local_district_id":1,"zone_id":117,"center_id":"A","center_name":"投票中心名称优先",}{"local_district_id":2,"zone_id":117,"center_id":"B","center_name":"投票中心名称秒",}{"local_district_id":6,"zone_id":117,"center_id":"C","center_name":"投票中心名称第三",}]}]}]

您可以通过这样的操作使其在单个循环中工作。这不是最漂亮的功能,但它可以在没有大量额外开销的情况下完成任务。

<script>
var original = [
    {"state":"First State","district":"First District","local_district_id":1,"zone_id":117,"center_id":"A","center_name":"Voting Center First"},
    {"state":"Second State","district":"First District","local_district_id":2,"zone_id":117,"center_id":"B","center_name":"Voting Center Second"},
    {"state":"First State","district":"First District","local_district_id":6,"zone_id":117,"center_id":"C","center_name":"Voting Center Third"},
];
var statesUsed = {};
var districtsUsed = {};
var newArray = [];
var stateIndex = 0;
var districtIndex = 0;
for (var i=0,l=original.length;i<l;i++) {
    var state = original[i].state;
    var district = original[i].district;
    var local_district_id = original[i].local_district_id;
    var zone_id = original[i].zone_id;
    var center_id = original[i].center_id;
    var center_name = original[i].center_name;
    if (statesUsed[state] == undefined) {
        statesUsed[state] = stateIndex;
        stateIndex++;
        newArray.push({state : state, children : []});
    }
    districtsUsed[state] = (districtsUsed[state] == undefined) ? {} : districtsUsed[state];
    if (districtsUsed[state][district] == undefined) {
        newArray[statesUsed[state]].children.push({district_name : district, children : []});
        districtsUsed[state][district] = newArray[statesUsed[state]].children.length - 1;
    }
    newArray[statesUsed[state]].children[districtsUsed[state][district]].children.push({
          local_district_id : local_district_id,
          zone_id : zone_id,
          center_id : center_id,
          center_name : center_name
    });

}
</script>
编辑:忘记显而易见的。。。但是:
  JSON = [
    {"state":"First State","district":"First District","local_district_id":1,"zone_id":117,"center_id":"A","center_name":"Voting Center First"},
    {"state":"First State","district":"First District","local_district_id":2,"zone_id":117,"center_id":"B","center_name":"Voting Center Second"},
    {"state":"First State","district":"First District","local_district_id":6,"zone_id":117,"center_id":"C","center_name":"Voting Center Third"},
]

混乱,但是。。。像这个

newObj = {};
for (var i in JSON) {
    if (!newObj.length) {
        newObj.push({'state': JSON[i]['state']})
        delete([JSON[i]['state'])
        newObj[0]['children'] = [JSON[i]]
        continue
    }
    for (var j in newObj) {
        if (newObj[j]['state'] = JSON[i]['state']) {
            delete([JSON[i]['state'])
            newObj[j]['children'].push(JSON[i])
         } else {
        newObj.push({'state': JSON[i]['state']})
        delete([JSON[i]['state'])
        newObj[newObj.length-1]['children'] = [JSON[i]]
         }
    }
}