javascript - 修改代码 使用递归
大家讲道理
大家讲道理 2017-04-11 09:11:26
[JavaScript讨论组]
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);

之前是用固定的参数,现在需要动态选择所需要的参数,所以要用到递归,但是弄了两个多小时没弄出来,求大神

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号