我如何编写 SelectMany(C# 中的 Linq 函数)以在 TypeScript 语言中执行相同的操作。
例如,示例代码的输出结果如下:
string[] letter = { "a", "b", "c" };
int[] number = { 1, 2, 3 };
var result = letter.SelectMany(x => number, (x, y) => (x + y));
结果 = a1, a2, a3, b1, b2, b3, c1, c2, c3
如何编写与此代码等效的 typescript 。我尝试了这个,但它不起作用。
const result = letter.reduce((x, y) => [...x, ...y], number);
你能帮帮我吗,谢谢。
最佳答案
C#的SelectMany
对应Typescript的flatMap
、scala的flatMap
和haskell的bind
。想法来自类别理论中称为 Monad 的概念。
使用平面 map
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'
// ]
减少
const letters: string[] = ['a', 'b', 'c']
const numbers: number[] = [1, 2, 3]
const result = letters.reduce<string[]>((p, c) => [...p, ...numbers.map((n) => `${c}${n}`)], [])
console.log(result)
// OUTPUT
// [
// 'a1', 'a2', 'a3',
// 'b1', 'b2', 'b3',
// 'c1', 'c2', 'c3'
// ]
关于javascript - C# Linq SelectMany,TypeScript 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63997266/