2016-11-04 8 views
0
private recursiveFunction(node: any): boolean { 
    var returnVal: boolean = false; 
    if (node.name('ABC') !== -1) { 
     return true; 
    } 
    if (node.children) { 
     for (let child of node.children) { 
      if (this.recursiveFunction(child)) { 
       returnVal = true; 
      } 
     } 
     return returnVal; 
    } 
} 

この機能は矢印機能として記述できますか?これがjavascript/typescriptですべてサポートされているかどうかは不明です。矢印機能で自己再帰が可能ですか?

編集 この関数をArrayのフィルタメソッドで矢印関数として渡したいと思います。例えば

let resultArray = someArray.filter((item: any) => { 
     return item.hasValue(); 
    }); 

答えて

1

はい、あなたは

var recursiveFunction = (node: any): boolean => { 
    var returnVal: boolean = false; 
    if (node.name('ABC') !== -1) { 
     return true; 
    } 
    if (node.children) { 
     for (let child of node.children) { 
      if (recursiveFunction(child)) { 
       returnVal = true; 
      } 
     } 
     return returnVal; 
    } 
} 
+0

は、それがより明確になりません。正確な問題は何ですか?矢印関数をローカル変数にバインドし、それをフィルター関数に渡すことができます。そのステップなしで動作するかどうかを知りたければ:いいえ、名前を持たない関数をどのように呼び出すことができますか。 – Matthias247

+0

私はそれを得た。ありがとう。 –

+0

それが助けられたら、答えを受け入れる/アップアップする。 – Matthias247

1

は、私はあなたが何を意味するのかを理解することができれば、その後についてどのように:

let fn = (node: any) => { 
    if (node.name('ABC') !== -1) { 
     return true; 
    } 

    if (node.children) { 
     return node.children.some(kid => fn(kid)); 
    } 

    return node.hasValue(); 
}; 

let resultArray = someArray.filter(fn); 

code in playground