簡體   English   中英

JAVASCRIPT 在 3D 對象數組中搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM