JavaScript将数组转化为多级树状结构

var aaa = [
    { name: 'wwb', id: 111 }, 
    { name: 'aaa', id: 0, pid: "mei" }, 
    { name: 'a', id: 1, pid: "mei" }, 
    { name: 'b', id: 2, pid: 1 }, 
    { name: 'c', id: 3, pid: 1 }, 
    { name: 'd', id: 4, pid: 2 }, 
    { name: 'e', id: 5, pid: 2 }
];

var transformTozTreeFormat = function(sNodes,id,parentId,childNode) {
    var i,l,
    key = id,
    parentKey = parentId,
    childKey = childNode;
    if (!key || key=="" || !sNodes) return [];
    if ($.isArray(sNodes)) {//判断是否为数组
        var r = [];
        var tmpMap = [];
        for (i=0, l=sNodes.length; i<l; i++) {//取出每一个对象,并以id命名
            tmpMap[sNodes[i][key]] = sNodes[i];
        }
        for (i=0, l=sNodes.length; i<l; i++) {
            if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
                if (!tmpMap[sNodes[i][parentKey]][childKey])
                    tmpMap[sNodes[i][parentKey]][childKey] = [];
                    tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
                } else {
                    r.push(sNodes[i]);
                }
            }
        return r;
    }else {
        return [sNodes];
    }
}
transformTozTreeFormat(aaa,'id','pid','subModules');
console.log(a)
var transformTozTreeFormat=function(a,e,i,r){var d,n,m=e,o=i,t=r;if(!m||""==m||!a)return[];if($.isArray(a)){var p=[],s=[];for(d=0,n=a.length;d<n;d++)s[a[d][m]]=a[d];for(d=0,n=a.length;d<n;d++)s[a[d][o]]&&a[d][m]!=a[d][o]?(s[a[d][o]][t]||(s[a[d][o]][t]=[]),s[a[d][o]][t].push(a[d])):p.push(a[d]);return p}return[a]};

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值