我想把这个json转变为如下的父子关系的数组,使用js中的递归要怎么操作呢?
json格式:
{
"fruit": [
{
"name": "水果"
},
{
"jiangguolei": [
{
"name": "浆果类"
},
{
"caomei": "草莓"
},
{
"lanmei": "蓝莓"
}
]
},
{
"ganjulei": [
{
"name": "柑橘类"
},
{
"miju": "蜜橘"
},
{
"shatangju": "砂糖橘"
}
]
},
{
"other": "其它"
}
]
}
转换后,相对应的父子关系的数组如下:
[
'fruit',
'fruit/jiangguolei',
'fruit/jiangguolei/caomei',
'fruit/jiangguolei/lanmei',
'fruit/ganjulei',
'fruit/ganjulei/miju',
'fruit/ganjulei/shatangju',
'fruit/other',
]
这是我用递归写的,不行,请指教:
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
function isObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]';
}
function changeArr(json, fpath){
var tmpArr = [];
for ( var p in json ){
if(p !== 'name'){
tmpArr.push(fpath + '/' + p);
}
if(isArray(json[p])){
// fpath = p;
changeArr(json[p], p);
}else if(isObject(json[p])){
changeArr(json[p], p);
}else{
}
}
return tmpArr;
}
console.log(changeArr(file, ''));