修改代码 使用递归
function arrToJson(flieds, arr) {
var map = {},
dest = [];
for (var i = 0; i < arr.length; i++) {
var ai = arr[i];
if (!map[ai[flieds[0]]]) {
var obj = {};
dest.push({
name: ai[flieds[0]],
data: [ai]
});
map[ai.hdata_type] = ai;
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j];
if (dj.name == ai[flieds[0]]) {
dj.data.push(ai);
break;
}
}
}
}
for (var i = 0, dest_len = dest.length; i < dest_len; i++) {
var map1 = {},
dest1 = [];
for (var x = 0, len = dest[i].data.length; x < len; x++) {
var ai = dest[i].data[x];
if (!map1[ai[flieds[1]]]) {
dest1.push({
name: ai.disaster_type,
data: [ai]
});
map1[ai[flieds[1]]] = ai;
} else {
for (var j = 0; j < dest1.length; j++) {
var dj = dest1[j];
if (dj.name == ai[flieds[1]]) {
dj.data.push(ai);
break;
}
}
}
}
dest[i].data = dest1;
}
for (var i = 0, dest_len = dest.length; i < dest_len; i++) {
for (var x = 0, dest1_len = dest[i].data.length; x < dest1_len; x++) {
var map2 = {},
dest2 = [];
for (var y = 0, len = dest[i].data[x].data.length; y < len; y++) {
var ai = dest[i].data[x].data[y];
if (!map2[ai[flieds[2]]]) {
dest2.push({
name: ai[flieds[2]],
data: [ai]
});
map2[ai.hazard_type] = ai;
} else {
for (var j = 0; j < dest2.length; j++) {
var dj = dest2[j];
if (dj.name == ai[flieds[2]]) {
dj.data.push(ai);
break;
}
}
}
}
dest[i].data[x].data = dest2;
}
}
return dest;
}
var flieds = ['hdata_type', 'disaster_type', 'hazard_type'];
var result = arrToJson(flieds, datacatalog);
之前是用固定的参数,现在需要动态选择所需要的参数,所以要用到递归,但是弄了两个多小时没弄出来,求大神
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
var m=0;
方案二: