我有一个项目数组
struct Item {
var id: String
}
如何使用 reduce 功能将所有ID附加到数组?
我尝试了什么:
self.items.reduce([String](), { $0.0.append($0.1.id)})
但是编译显示错误:
上下文闭包类型'(_,[Item]) - > _'需要2个参数,但在封闭体中使用了1个
答案 0 :(得分:3)
试试这个:
items.reduce([String](), { res, item in
var arr = res
arr.append(item.id)
return arr
})
答案 1 :(得分:2)
您可能意味着map
而不是reduce
let ids = items.map{ $0.id }
答案 2 :(得分:1)
如果你想用reduce来做,这里是Swift 3和4的片段:
struct Item {
var id: String
}
var items = [Item(id: "text1"), Item(id: "text2")]
let reduceResult = items.reduce([String](), { $0 + [$1.id] } )
reduceResult // ["text1", "text2"]
有两个问题:
但在这种情况下,最好的解决方案是使用map:
let reduceResult = items.map { $0.id }