说...我有一个数组[ 1, 2, 4, 5, 6, 9]
。我想从中制作另一个数组。例如["1-2", "2-4", "4-5", "5-6", "6-9"]
,它基于前一个项目,后面跟着另一个项目。在Swift 3中实现这一目标的最酷方法是什么?是的,我知道如何做这种古老的时尚方式。但我想知道,如果有一种很酷或简单的方法可以使用map
,reduce
或其他方式来执行此操作。
谢谢,
答案 0 :(得分:5)
您可以使用zip
和map
以及dropLast
和dropFirst
来生成结果:
let arr = [ 1, 2, 4, 5, 6, 9]
let result = zip(arr.dropLast(), arr.dropFirst()).map { "\($0)-\($1)" }
print(result)
输出:
["1-2", "2-4", "4-5", "5-6", "6-9"]
zip
通过从两个序列创建一系列元组对来工作。 map
然后使用String
插值对这些对进行组合。
正如@MartinR指出的那样,由于zip
适用于不同长度的序列,因此您可以跳过dropLast()
:
let result = zip(arr, arr.dropFirst()).map { "\($0)-\($1)" }
从选项中看到的文档 - 点击zip
:
如果两个序列传递给zip(: :)的长度不同,那么 结果序列与较短序列的长度相同。