//傳入參數:需要遍歷的對象,需要匹配的id,獲取所有的父級節(jié)點的Id
? ? ? ??function?findIdList(data2,?id,?children?=?'children',?level?=?0)?{
??var?arrRes?=?[];
??let?obj?=?{
??????id:?0,
??????[children]:?data2
??}
??let?rev?=?(data,?id,?level)?=>?{
????if?(!data?||?!data[children]?||?!data[children].length)?{
??????return;
????}
????for?(var?i?=?0;?i?<?data[children].length;?i++)?{
??????let?item?=?data[children][i];
??????if?(item.id?==?id)?{
????????//?將匹配到的結果保存到數組
????????arrRes.unshift({?level,?activeId:?item.id?});
????????//?遞歸它的父級
????????rev(obj,?data.id,?0);
????????break;
??????}?else?if?(item[children]?&&?item[children].length?>?0)?{
????????//如果有子集,則把子集作為參數重新執(zhí)行本方法
????????rev(item,?id,?level?+?1);
??????}
????}
??};
??rev(obj,?id,?level);
??return?arrRes;
}
let?list?=?[
????{id:?1,?children:?[
????????{id:?11,?children:?[{id:?12}]}
????]},
????{id:?2,?children:?[{id:21,?children:?[{id:?31}]}]}
]
let?b?=?findIdList(list,?21)
console.log(b)?//?[?{?level:?0,?activeId:?2?},?{?level:?1,?activeId:?21?}?]
