我可以使用什么函数编程-theh函数(map,reduce,zip)来替换此for
循环的功能? (数组有不同的对象,但元素数相同)
@IBOutlet var imageViews: [UIImageView]!
photoURLs = ["http://...photo1...", "http://...photo2...", "http://...photo3..."]
for (index, photo) in photoURLs.enumerated() {
imageViews[index].setImageFromString(string: photo.urlString)
}
更新:大多数评论/答案都适合我提出的这个问题的第一个版本。现在,我用我的具体案例修改了它。
关于重复问题:这个问题不涉及组合两个数组,它指的是将值从一个数组复制到另一个数组,完全相同的索引,但也将它们放在自定义方法中。
答案 0 :(得分:3)
假设两个阵列都包含相同的元素......
let array2 = firstArray
答案 1 :(得分:3)
我无法测试我的代码,但可能就像......
self.imageViews = photoURLs.map()
{
guard let data = NSData(contentsOf: $0), let image = UIImage(data: data)
{
return UIImageView(image: nil)
}
return UIImageView(image: image)
)
假设photoURL是URL
数组。
答案 2 :(得分:1)
您可以尝试这样的事情:
zip(imageViews, photoURLs)
.forEach { $0.setImageFromString(string: $1.urlString) }
详细示例:
let views = ["View0", "View1", "View2"]
let urls = ["url0", "url1", "url2"]
zip(views, urls)
.forEach { print("View: \($0), URL: \($1)") }
// Result:
View: View0, URL: url0
View: View1, URL: url1
View: View2, URL: url2
答案 3 :(得分:0)
let flatMappedNumbers = firstArray.flatMap { $0 }
print(flatMappedNumbers)