js递归数组,并更改key值,形成新的数组

var treeData = [{
        "name": "剑侠世界",
        "columns": [{
                "name": "新闻中心",
                "columns": [{
                        "name": "新闻",
                        "parentId": 2
                    },
                    {
                        "name": "公告",
                        "parentId": 2
                    }
                ],
                "parentId": 1
            },
            {
                "name": "玩家文选",
                "columns": [{
                        "name": "门派攻略",
                        "parentId": 2
                    },
                    {
                        "name": "玩家心情",
                        "parentId": 2
                    }
                ],
                "parentId": 1
            },
            {
                "name": "游戏资料",
                "columns": [{
                        "name": "游戏资料0",
                        "parentId": 2
                    },
                    {
                        "name": "游戏资料1",
                        "parentId": 2
                    }
                ],
                "parentId": 1
            }
        ],
        "parentId": 0
    },
    {
        "name": "剑侠世界1",
        "columns": [{
                "name": "新闻中心1",
                "columns": [{
                        "name": "新闻1"
                    },
                    {
                        "name": "公告1"
                    }
                ]
            },
            {
                "name": "玩家文选1",
                "columns": [{
                        "name": "门派攻略1"
                    },
                    {
                        "name": "玩家心情1"
                    }
                ]
            },
            {
                "name": "游戏资料1",
                "columns": [{
                        "name": "游戏资料01"
                    },
                    {
                        "name": "游戏资料01"
                    }
                ]
            }
        ],
        "parentId": 0
    }
];
数据结构如上
形成新的数组,name改成title, parentId改成key
  • 请问各位要怎么做啊~~~
  • 我现在写一半卡住了...
阅读 5.4k
1 个回答

不过会改变原数据

function t(arr) {
  for (var i = 0; i < arr.length; i++) {
    if (arr[i].columns) {
      arr[i].columns = t(arr[i].columns);
    }
    arr[i].name && (arr[i].title = arr[i].name);
    arr[i].parentId && (arr[i].key = arr[i].parentId);
    delete arr[i].name;
    delete arr[i].parentId;
  }
  return arr;
}
t(treeData);

也可以用正则直接替换

JSON.parse(JSON.stringify(treeData).replace(/"name"/g,"\"title\"").replace(/"parentId"/g,"\"key\""))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题