[英]JAVASCRIPT Search in 3D array of objects
我有一個包含一些數據的數組,如下所示:
const data = [ {"key":9054,"title":"1","children":[ {"key":8959,"title":"1-0","idFather":8959,"tableIsFamily":false,"children":[]}, {"key":8943,"title":"1-1","idFather":8943,"tableIsFamily":false,"children":[]}, {"key":9021,"title":"1-2","idFather":9021,"tableIsFamily":false,"children":[]}, {"key":8969,"title":"1-3","idFather":8969,"tableIsFamily":false,"children":[]}]}, {"key":9040,"title":"2","children":[ {"key":8957,"title":"2-0","idFather":8957,"tableIsFamily":false,"children":[]}, {"key":8941,"title":"2-1","idFather":8941,"tableIsFamily":false,"children":[ {"key":8947,"title":"2-1-0","idFather":8941}, {"key":9855,"title":"2-1-1","idFather":8941} ]}, {"key":8949,"title":"3-0","idFather":8949,"tableIsFamily":false,"children":[]}, {"key":8983,"title":"3-1","idFather":8983,"tableIsFamily":false,"children":[]}, {"key":10070,"title":"3-2","idFather":10070,"tableIsFamily":false,"children":[]} ]} ];
我有另一個數組,其中有一些 ID,如下所示:
[9054, 9021, 9040, 8941, 8947]
我想過濾數據數組並只獲得與第二個數組匹配的數組,我嘗試了一些映射/過濾器,但它似乎比我想的要困難,你有什么想法如何處理這個數組嗎?
預期的 output 應該是:
const data = [ {"key":9054,"title":"1","children":[ {"key":9021,"title":"1-2","idFather":9021,"tableIsFamily":false,"children":[]}, {"key":9040,"title":"2","children":[ {"key":8941,"title":"2-1","idFather":8941,"tableIsFamily":false,"children":[ {"key":8947,"title":"2-1-0","idFather":8941}, ]}, ]} ];
謝謝!
您可以將遞歸 function 用於深度數據。 像這樣。 此 function 也可用於更深的結構。
關於遞歸 function 的更多信息在這里: https://www.geeksforgeeks.org/recursive-functions/#:~:text=In%20programming%20terms%2C%20%e%20recursive.20quican ,
const data = [ {"key":9054,"title":"1","children":[ {"key":8959,"title":"1-0","idFather":8959,"tableIsFamily":false,"children":[]}, {"key":8943,"title":"1-1","idFather":8943,"tableIsFamily":false,"children":[]}, {"key":9021,"title":"1-2","idFather":9021,"tableIsFamily":false,"children":[]}, {"key":8969,"title":"1-3","idFather":8969,"tableIsFamily":false,"children":[]}]}, {"key":9040,"title":"2","children":[ {"key":8957,"title":"2-0","idFather":8957,"tableIsFamily":false,"children":[]}, {"key":8941,"title":"2-1","idFather":8941,"tableIsFamily":false,"children":[ {"key":8947,"title":"2-1-0","idFather":8941}, {"key":9855,"title":"2-1-1","idFather":8941} ]}, {"key":8949,"title":"3-0","idFather":8949,"tableIsFamily":false,"children":[]}, {"key":8983,"title":"3-1","idFather":8983,"tableIsFamily":false,"children":[]}, {"key":10070,"title":"3-2","idFather":10070,"tableIsFamily":false,"children":[]} ]} ]; const ids = [9054, 9021, 9040, 8941, 8947] filterData = (data)=> { const newData = data.filter((obj)=>ids.includes(obj.key)); newData.forEach((obj)=>{obj.children? obj.children = filterData(obj.children): []}); return newData; } console.log(filterData(data));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.