[英]JSON complex nested array sort using order
我有一個復雜的嵌套JSON數組,我想使用外部級別的subitemnameorder
和from.inside級別的itemsortorder
從內部和外部級別對其進行排序
我給定的數組下面
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/還附加了控制台的圖像
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.