javascript - js数据处理转换??

查看:138
本文介绍了javascript - js数据处理转换??的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var data1=[{
            "tid": "1",
            "text": "产品分析",
            "children": [{
                "tid": "1-1",
                "text": "模拟产品计划",
                "children": [{
                    "tid": "1-1-1",
                    "text": "用户行为分析1"
                }, {
                    "tid": "1-1-2",
                    "text": "用户行为分析2"
                }]
            }]

 var data2 = [
            {"tid": "1", "text": "产品分析"},
            {"tid": "1-1", "pid": "1", "text": "模拟产品计划"},
            {"tid": "1-1-1", "pid": "1-1", "text": "用户行为分析1"},
            {"tid": "1-1-2", "pid": "1-1", "text": "用户行为分析2"}
        ];

请问大神,这两种数据格式怎么互相转换?注意pid的增添!!!

解决方案

var data=[{
    "tid": "1",
    "text": "产品分析",
    "children": [{
        "tid": "1-1",
        "text": "模拟产品计划",
        "children": [{
                    "tid": "1-1-1",
                    "text": "用户行为分析1"
                }, {
                    "tid": "1-1-2",
                    "text": "用户行为分析2"
                }]
        }] 
}];
            
var res = [];

function transform(arr,pid){
    arr.map(function(item){
        res.push({
            tid : item.tid,
            pid : pid,
            text : item.text
        });        
        item.children && item.children.length && transform(item.children , item.tid);
    });
}

transform(data);

console.log(res);

function buildTree(tree,node){
    if(!node.pid){
        delete node.pid;
        tree.push(node);
    }
    else{
        tree.map(function(item){
            if(item.tid == node.pid){
                delete node.pid;
                item.children = item.children || [];                
                item.children.push(node);
            }else{
                buildTree(item.children,node);
            }
        });
        
    }    
}

var data = [];

for(item of res){
    buildTree(data,item);
}

console.log(data)

这篇关于javascript - js数据处理转换??的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆