年终讲(3)———— tree数据,新增的优化

@liushaozhen 2019-01-08 10:21:13发表于 iuap-design/blog

写在前面的

用tree组件,新增叶子节点,还未像后台发请求的时候,需要先将tree的数据新增一条。 例如:渲染 a,给a增加一个孩子节点。

中间的

翻了例子和lodash等,大部分都是需要遍历tree数据,然后操作,这样如果层级很深,就比较毫费性能。
所以做了如下操作。 大概说明:利用JSON.parse和JSON.stringfy,将数据转换为string,然后使用replace替换指定字符串。

上代码

let ary = [
    {
        name:'1',
        key:'1',
        children:[
            {
                name:'11',
                key:'11'
            },
            {
                name:'12',
                key:'12'
            },
        ]
    },
    {
        name:'2',
        key:'2'
    },
    {
        name:'3',
        key:'3'
    },
];

let item = {
    name:'1',
    key:'1',
    children:[
        {
            name:'11',
            key:'11'
        },
        {
            name:'12',
            key:'12'
        },
    ]
};

要求在 ary中找到 item,并给item新增一个孩子

let addNode = (ary,item)=>{
    let aryStr = JSON.stringify(ary);
    let itemStr = JSON.stringify(item);
    let children=item.children?item.children:[];
    children.push({name:'新增',key:'addKey'});
    item.children=children;
    let item2Str=JSON.stringify(item);
    let endStr = aryStr.replace(itemStr,item2Str);
    return JSON.parse(endStr);
}

addNode(ary,item);