如题,功能是为了生成一个多级数组内的某个id及他的父元素的id数组,但是在查询完毕以后retrun出生成的数组结果,依然还执行了剩下的循环,请问要如何中断并跳出呢
initArr = (id, type) => {
let list = this.props[`${type}List`],
arr = [];
const getClassify = (list, id) => {
for (let i of list) {
if (i.item_category_code === id) {
arr.push(i.item_category_code);
console.log('查询完毕');
console.log(arr);
return arr;
} else {
arr.push(i.item_category_code);
i.child ? getClassify(i.child, id) : (arr = []);
}
}
console.log('遍历中');
return arr;
};
console.log('生成数组:' + getClassify(list, id));
}
启用了一个判断变量,达成条件以后下次循环判断数组已生成以后return
export const recursionArr = (list, id, name) => {
let arr = [],
end = false;
const getClassify = (list, id) => {
for (let i of list) {
if (i[name] === id) {
arr.push(i[name]);
end = true;
} else {
if (end) return arr;
arr.push(i[name]);
i.child ? getClassify(i.child, id) : (arr = []);
}
}
return arr;
};
return getClassify(list, id);
};
不是执行了剩下的循环
而是递归到下一层了,如果你需要找到所有符合条件的节点,那么递归到下一层是不可避免的
如果你不想递归查找,那就要写好边界条件,要是不符合条件就不继续递归下去