如何解决C#Linq SelectMany,相当于TypeScript
我如何编写 SelectMany (这是C#中的Linq函数)来用TypeScript语言执行相同的操作。
例如,示例代码的输出如下:
string[] letter = { "a","b","c" };
int[] number = { 1,2,3 };
var result = letter.SelectMany(x => number,(x,y) => (x + y));
result = a1,a2,a3,b1,b2,b3,c1,c2,c3
如何编写与此代码等效的打字稿。我尝试了一下,但是没有用。
const result = letter.reduce((x,y) => [...x,...y],number);
谢谢你。
解决方法
C#SelectMany
对应于Typescript的flatMap
,scala的flatMap
和haskell的bind
。想法来自类别理论中称为 Monad 的概念。
使用flatMap
const letters: string[] = ['a','b','c']
const numbers: number[] = [1,2,3]
const result = letters.flatMap((letter) => numbers.map((n) => `${letter}${n}`))
console.log(result)
// OUTPUT
// [
// 'a1','a2','a3',// 'b1','b2','b3',// 'c1','c2','c3'
// ]
使用reduce
const letters: string[] = ['a',3]
const result = letters.reduce<string[]>((p,c) => [...p,...numbers.map((n) => `${c}${n}`)],[])
console.log(result)
// OUTPUT
// [
// 'a1','c3'
// ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。