javascript树数据源嵌套结构和扁平结构互转
javascript树,嵌套结构数据源和扁平结构数据源相互转换示例
<title>javascript树数据源嵌套结构和扁平结构互转示例</title> <script type="text/javascript"> function FlatToNested(data, opt) {//树数据源扁平结构转嵌套 opt = opt || {}; var idFiled = opt.idFiled || 'id'; var textFiled = opt.textFiled || 'text'; var parentField = opt.parentField || 'parent'; var i, l, treeData = [], tmpMap = []; for (i = 0, l = data.length; i < l; i++) tmpMap[data[i][idFiled]] = data[i]; for (i = 0, l = data.length; i < l; i++) { if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) { if (!tmpMap[data[i][parentField]]['children']) tmpMap[data[i][parentField]]['children'] = []; data[i]['text'] = data[i][textFiled]; tmpMap[data[i][parentField]]['children'].push(data[i]); } else { data[i]['text'] = data[i][textFiled]; treeData.push(data[i]); } } return treeData; } function NestedToFlat(children, parent) {//树数据源嵌套结构转扁平 var arr = [] for (var i = 0; i < children.length; i++) { arr.push({ id: children[i].id, text: children[i].text, parent: parent }) if (children[i].children) arr = arr.concat(NestedToFlat(children[i].children, children[i].id)); } return arr; } var data = [ { "id": 1, "text": "text1", "children": [{ "id": 4, "text": "text1_1" }, { "id": 5, "text": "text1_2" }] }, { "id": 2, "text": "text2", "children": [{ "id": 6, "text": "text2_1", "children": [{ "id": 7, "text": "text2_1_1" }] }] }, { "id": 3, "text": "text3" }]; data = NestedToFlat(data, 0); console.log(JSON.stringify(data,null,2)); data = FlatToNested(data, 0); console.log(JSON.stringify(data, null, 2)); </script>
加支付宝好友偷能量挖...
原创文章,转载请注明出处:javascript树数据源嵌套结构和扁平结构互转