我想將結果作為遞回的回傳值取回,但我得到“未定義”。我在這里通讀了所有相關的解決方案(見***),但不知何故我的例子不起作用。如果我使用的是全域變數,那么我可以獲得結果,否則回傳值為“未定義”。
https://stackblitz.com/edit/typescript-1b2ktw
export interface Needle {
needles: Needle[];
text: string;
}
export const Needles: Needle[] = [
{
text: 'root',
needles: [
{
text: 'a',
needles: [
{ text: 'a1', needles: null },
{ text: 'a2', needles: null },
],
},
{ text: 'b', needles: null },
],
},
];
let result;
function findNeedle(needles: Needle[], key: string, value: string): any {
needles.forEach((x) => {
if (x[key] === value) {
// return x as Needle; // doesnt work
result = x; // works just ugly
}
if (x.needles) {
needles = x.needles;
// return findNeedle(needles, key, value); solution *** like this doesnt work also
findNeedle(needles, key, value);
}
});
}
console.clear();
let x = findNeedle(Needles, 'text', 'a1');
console.log('x:', x, 'result', result);
--- CONSOLE
Console was cleared
x:undefined, result {text: "a1", needles: null}
如何解決此問題以獲取回傳值的結果?
提前致謝。
喬巴
uj5u.com熱心網友回復:
不要使用forEach,而是一個for..of回圈。這樣你就可以在return不被困在回呼函式中的情況下做一些事情。
function findNeedle(needles: Needle[], key: string, value: string): any {
for (let x of needles) {
if (x[key] === value) return x;
if (x.needles) {
result = findNeedle(x.needles, key, value);
if (result) return result;
}
}
}
uj5u.com熱心網友回復:
x是未定義的,因為findNeedle()它不是return結果,而是將一個分配給result變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/406977.html
標籤:
