如何使用地图并在Typescript中一起查找?

时间:2018-03-27 12:27:40

标签: javascript typescript lambda arrow-functions

我正在尝试创建一个长度大于零的所有字符串数组。

let sampleArray2:string[] = ["hello","world","angular","typescript"];
let subArray:string[] = sampleArray2
    .map(() => sampleArray2
        .find(val => val.length > 5)
    );
console.log(subArray);

正如预期的那样,它正在返回[ 'angular', 'angular', 'angular', 'angular' ] 我想要它打印[ 'angular', 'typescript' ]

我特意寻找一种同时使用map和find来实现此目的的解决方案。我该如何解决这个问题?

注意:虽然filter是一个简单的解决方案,但我正在尝试查看map和find是否可以一起使用以获得所需的输出。

4 个答案:

答案 0 :(得分:0)

let subArray:string[] = sampleArray2.filter(i => i.length > 5);

请参阅MDN web docs - Array.prototype.filter

答案 1 :(得分:0)

.find不是您想要的 - 您需要.filter.

答案 2 :(得分:0)

问题是你的map()会返回' angular' 5次。

使用过滤器的正确语法(因此保留您的类型)应该是:

let subArray:string[]= sampleArray2.filter(val=>val.length>5)

答案 3 :(得分:0)

您不需要功能map,也不需要功能find

使用函数filter



let sampleArray2 = ["hello", "world", "angular", "typescript"];
let subArray = sampleArray2.filter(val => val.length > 5);

console.log(subArray);