2016-11-04 190 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

如果它帮助你,然后接受/ upvote答案。 – 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

相关问题