最酷的方式结合Swift 3中的项目

时间:2016-12-17 16:01:35

标签: swift

说...我有一个数组[ 1, 2, 4, 5, 6, 9]。我想从中制作另一个数组。例如["1-2", "2-4", "4-5", "5-6", "6-9"],它基于前一个项目,后面跟着另一个项目。在Swift 3中实现这一目标的最酷方法是什么?是的,我知道如何做这种古老的时尚方式。但我想知道,如果有一种很酷或简单的方法可以使用mapreduce或其他方式来执行此操作。

谢谢,

1 个答案:

答案 0 :(得分:5)

您可以使用zipmap以及dropLastdropFirst来生成结果:

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( :)的长度不同,那么   结果序列与较短序列的长度相同。