优化版(新)
tabledata = flatten(d.data.rows);
// 扁平化树形数据
function initData(arr, item) {
var rows = item.rows;
var obj = {
id: item.id,
isInternal: item.isInternal,
isExternal: item.isExternal,
isFocused: item.isFocused,
name: item.name,
parentId: item.parentId
}
return arr.concat([obj], flatten(rows))
}
function flatten(data) {
console.log("flatten",data)
return data.reduce(initData, [])
}
需要格式的数据
d={
"status": "base-0001",
"msg": "success",
"data": [{
"id": 1,
"code": "001",
"name": "工程",
"sortNum": 1,
"parentId": 0,
"skillId": "",
"level": 1,
"list": [{
"id": 3,
"code": "001",
"name": "水电",
"sortNum": 1,
"parentId": 1,
"skillId": 1,
"level": 2
},
{
"id": 4,
"code": "001",
"name": "煤气",
"sortNum": 2,
"parentId": 1,
"skillId": 2,
"level": 2
}
]
}]
}
一、通用
//调用
var data=getArray(d.data,"list");
// 格式化树形数据
function getArray(data, child) { //参数data:要格式化的数据,child为要格式化数据的子数组值名
var trees = new Array();
var fn;
for (var i in data) {
var newData = {
"id": data[i].id,
"value": data[i].name?data[i].name:"未命名",
"childs": []
}
trees.push(newData);
fn = getArray(data[i][child], child);
if (data[i][child]) {
trees[i].childs = fn;
}
}
newData = null;
fn = null;
return trees
}
格式后数据
data=[{
"id": 1,
"value": "工程",
"childs": [{
"id": 3,
"value": "水电",
},
{
"id": 4,
"value": "煤气",
}
]
}]
二、特殊数据格式化
//调用
var data=getArraySerTypeIdD(d.data,"list");
//格式化方法
function getArraySerTypeIdD(data,child){
var trees =new Array();
var fn;
for (var i in data) {
var newData={
"id": data[i].id,
"value": data[i].name,
"code": data[i].code,
"level":data[i].level,
"parentId":data[i].parentId,
"skillId":data[i].skillId,
"sortNum":data[i].sortNum,
"childs":[]
}
// console.log(newData)
trees.push(newData);
fn= getArraySerTypeIdD(data[i][child],child);
if (data[i][child]) {
trees[i].childs=fn;
}
}
newData=null;
fn=null;
return trees
}
格式化后
data=[{
"id": 1,
"code": "001",
"value": "工程",
"sortNum": 1,
"parentId": 0,
"skillId": "",
"level": 1,
"childs": [{
"id": 3,
"code": "001",
"value": "水电",
"sortNum": 1,
"parentId": 1,
"skillId": 1,
"level": 2
},
{
"id": 4,
"code": "001",
"value": "煤气",
"sortNum": 2,
"parentId": 1,
"skillId": 2,
"level": 2
}
]
}]