多维数组通过子元素 获取父元素集合以及父元素对应数组的集合
function getCascaderFullValue(cascader, id) { let cascaderFullValue = [id]; _getParentId(cascaderFullValue, cascader,cascader, id); return cascaderFullValue; /** * * @param {Array} cascaderFullValue value for return * @param {Array} cascader value for loop * @param {Array} _cascader value of original * @param {number} _id value of bottom item */ function _getParentId(cascaderFullValue, cascader, _cascader, _id) { if (!Array.isArray(cascader)) return; for (let cascaderItem of cascader) { if (!Array.isArray(cascaderItem.routes)) continue; let index = cascaderItem.routes.findIndex(item => item.path === _id); //找到返回该元素的位置 有值为0 没有值返回-1 if (index >= 0) { cascaderFullValue.unshift(cascaderItem.path); // 在数组开头添加元素 console.log(_cascader,'_cascader',cascaderItem,_cascader.findIndex(item => item.path === cascaderItem.path)) if(_cascader.findIndex(item => item.path === cascaderItem.path) < 0) //is original item _getParentId(cascaderFullValue, _cascader, _cascader,cascaderItem.path); } else { _getParentId(cascaderFullValue, cascaderItem.routes, _cascader,_id); } } } } let json= { "data":[ { "path":7, "label":"初级会计师22", "routes":[ { "path":11, "label":"初级会计实务", "routes":[ { "path":13, "label":"初级会计实务试卷模块", "routes":null } ] } ] }, { "path":6, "label":"审计师", "routes":[ { "path":12, "label":"审计与考核", "routes":[ { "path":14, "label":"审计与考核模块!!", "routes":null } ] }, { "path":10, "label":"审计理论", "routes":[ { "path":15, "label":"审计模块!222!", "routes":null } ] } ] } ] } const result = getCascaderFullValue(json.data,13); console.log(result);//[6, 12, 14] let currentItem= json.data.filter(item=>result.includes(item.path)); console.log(currentItem,'currentItem')
返回的currentItem:

浙公网安备 33010602011771号