在TypeScript中返回不同类型的数组

时间:2017-11-11 19:19:08

标签: arrays linq typescript asynchronous array-filter

在TypeScript 2.5.3中,我有一堆链接的selenium WebElements。我需要在一个字符串数组中获取目标。从C#开始我将使用Linq和.Select(),它本身从选择器返回一个返回类型列表。在Typescript中,这似乎并没有那么好用:

    let categoryLinkElements = await this.driver.findElements(By.css('ul li a'));
    let categoryLinks = categoryLinkElements.filter(async linkElement => await linkElement.getAttribute('href'));

categoryLinkElementsWebElement的数组。并linkElement.getAttribute('href')返回Promise<string>。使用await的原因,我希望categoryLinks是一个字符串数组,就像C#中List.Select()的相同行为一样。相反,categoryLinksWebElement[]

为什么呢?我怎样才能得到正确的回报值?

1 个答案:

答案 0 :(得分:0)

Array.filter在这里似乎有误,相反它应该用于返回与输入数组相同的值,但是有一些过滤条件。相反,Array.map是C#中List.Select的正确等价物。

以下按预期方式工作:

let categoryLinks = categoryLinkElements.map(async linkElement => await linkElement.getAttribute('href'));

作为Typescript和Javascript的初学者,这似乎是一个愚蠢的问题......抱歉:/