操作JavaScript数组
Manipulate JavaScript Array
我希望你能帮助我。如何转换这个平面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]]
}
}
}
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript