我有一个复杂的嵌套 JSON 数组,我想使用itemsortorder
from subitemnameorder
external level和from.inside level从内部和外部级别对其进行排序
我给定的数组如下
id:1,
"fruits":[
{
"itemid":1,
"itemname":"Red Fruits",
"itemsortorder":2,
"subitems":[ {"subitemname":"Apple", "subitemnameorder":2},
{"subitemname":"Grapes", "subitemnameorder":1},
{"subitemname":"Berryberry", "subitemnameorder":3}
]
},
{
"itemid":2,
"itemname":"Yellow Fruits",
"itemsortorder":1,
"subitems":[ {"subitemname":"Orange", "subitemnameorder":3},
{"subitemname":"Gua", "subitemnameorder":1},
{"subitemname":"Mango", "subitemnameorder":2}
]
}
],
"Vegetable":[
{
"itemid":3,
"itemname":"Red Veggies",
"itemsortorder":2,
"subitems":[ {"subitemname":"Onion", "subitemnameorder":2},
{"subitemname":"Ginger", "subitemnameorder":1},
{"subitemname":"Carrot", "subitemnameorder":3}
]
},
{
"itemid":4,
"itemname":"Small Veggies",
"itemsortorder":1,
"subitems":[ {"subitemname":"pepper", "subitemnameorder":3},
{"subitemname":"halo", "subitemnameorder":1},
{"subitemname":"good", "subitemnameorder":2}
]
},
{
"itemid":5,
"itemname":"Cool",
"itemsortorder":3,
"subitems":[ {"subitemname":"abc", "subitemnameorder":3},
{"subitemname":"pqr", "subitemnameorder":1},
{"subitemname":"kooi", "subitemnameorder":2}
]
}
],
"avoid":[
{
"itemid":3,
"itemname":"avoid Veggies",
"itemsortorder":2,
"subitems":[ {"subitemname":"Onion", "subitemnameorder":2},
{"subitemname":"Ginger", "subitemnameorder":1},
{"subitemname":"Carrot", "subitemnameorder":3}
]
}]
}
避免避免数组部分
预期的
{
"filename":"Yellow Fruits",
"children":[
{
"filename":"Gua",
"subitemnameorder":1
},
{
"filename":"Mango",
"subitemnameorder":2
},
{
"filename":"Orange",
"subitemnameorder":3
}
]
},
{
"filename":"Red Fruits",
"children":[
{
"filename":"Grapes",
"subitemnameorder":1
},
{
"filename":"Apple",
"subitemnameorder":2
},
{
"filename":"Berryberry",
"subitemnameorder":3
}
]
},
,
{
"filename":"Small Veggies",
"children":[
{
"filename":"halo",
"subitemnameorder":1
},
{
"filename":"good",
"subitemnameorder":2
},
{
"filename":"pepper",
"subitemnameorder":3
}
]
},
{
"filename":"Red Veggies",
"children":[
{
"filename":"Ginger",
"subitemnameorder":1
},
{
"filename":"Carrot",
"subitemnameorder":2
},
{
"filename":"Onion",
"subitemnameorder":3
}
]
},
{
"filename":"Cool",
"children":[
{
"filename":"pqr",
"subitemnameorder":1
},
{
"filename":"kooi",
"subitemnameorder":2
},
{
"filename":"abc",
"subitemnameorder":3
}
]
}
]
首先它应该从水果中提取并进行相应的分类,然后从蔬菜中提取并遵循
我试过过滤器和地图,但没有用。请帮忙。
我试过下面的功能请看小提琴
我假设您将 json 分配给变量,data
因此代码如下
let keysarr = Object.keys(data);
let temp = [];
for(let i=0;i<keysarr.length;i++){
if(keysarr[i]!=="id" && keysarr[i]!=="avoid"){
let tempsortL1 = data[keysarr[i]].
sort((a,b)=>a.itemsortorder-b.itemsortorder).map((item)=>{
let retObj={};
retObj["filename"] = item.itemname;
retObj["children"]=item.subitems.sort((a,b)=>a.subitemnameorder-b.subitemnameorder);
temp.push(retObj);
return retObj;});
}
};
您所需的数组将变为temp
. 抱歉,如果您觉得代码未格式化,我试图保持不考虑排序中的键。这是小提琴https://jsfiddle.net/pv2sLejc/还附上了控制台的图像
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句