【发布时间】:2021-09-09 04:33:01
【问题描述】:
我不确定我这样做是否正确(让我知道).. 让我们说
let myFruits = [
...(['apple', 'grapefruit', 'pear'].map((fruit) =>
[
fruit,
'red ' + fruit,
]
))
]
console.log(myFruits) //[["apple", "red apple"], ["grapefruit", "red grapefruit"], ["pear", "red pear"]]
我想要的是
["apple", "red apple", "grapefruit", "red grapefruit", "pear", "red pear"]
我试着做...(它给出了一个错误)
let myFruits = [
...(['apple', 'grapefruit', 'pear'].map((fruit) =>
[
fruit,
'red ' + fruit,
]
)).map((fr)=>...fr)
]
【问题讨论】:
-
你不想要传播运算符;改用
flatMap函数(flatMap是 JS 的等价于 Linq 的SelectMany)。 -
这里包含一堆解决方法,适用于您的环境不支持
flatMap:Why no Array.prototype.flatMap in javascript?(在 JS 中,它仅在最近才可用)。 -
或者,使用
flatMap只是map后跟flatten的事实,并使用[].concat(...lists)代替lists.flatten()。在您的情况下,它类似于[].concat(...(['foo', 'bar'].map(x => [x, 'red ' + x]))。
标签: typescript