是否可以在compactMap返回中添加多个值?
这是我尝试过的。它将不起作用,因为返回值需要一个字符串。
var array: [String] = ["This","is","just","an","example"]
var newArray: [String] = array.compactMap({ return [$0, "foo"] })
print(newArray)
我想要一个输出数组,例如:[“ This”,“ foo”,“ is”,“ foo”,“ just”,“ foo”,“ an”,“ foo”,“ example”,“ foo” ]
但我不希望为该特定示例提供解决方案。我问是否有可能在compactMap中返回多个值并在compactMap中操纵其计数
答案 0 :(得分:1)
这是一个很好的示例,其中错误的类型注释会破坏代码。
映射数组的类型实际上是[[String]]
基本上不注释编译器可以推断的类型。
您不需要compactMap
,因为所有类型都是非可选的
let array = ["This","is","just","an","example"]
let newArray = array.map({ return [$0, "foo"] })
print(newArray)
但是要获得[String]
,您必须使用 flatMap
let array = ["This","is","just","an","example"]
let newArray = array.flatMap({ return [$0, "foo"] })
print(newArray)
答案 1 :(得分:1)
只需使用var persons=[
{
id: 1,
name: 'Daniel',
job: 146
},
{
id: 2,
name: 'Jose',
job: 163
}
];
var jobs=[
{
id: 146,
name: 'Developer'
},
{
id: 163,
name: 'DevOps'
}
];
var retVal=persons.map(p=>{
return {...p,job:jobs.find(j=> j.id==p.job)};
})
console.log(retVal)
方法:
flatMap