iphone - 你如何在 Swift 中连接两个数组并保持每个数组的顺序? (快速交错数组)

标签 iphone arrays sorting swift

我有两个数组,我需要保持顺序

let a = ["Icon1", "Icon2", "Icon3",]
let b = ["icon1.png", "icon2.png", "icon3.png",]

如果我将两者结合起来,我会得到

let c = a + b
// [Icon1, Icon2, Icon3, icon1.png, icon2.png, icon3.png]

如何得到下面的结果?

[Icon1, icon1.png, Icon2, icon2.png, Icon3, icon3.png]

最佳答案

2015 年 12 月 16 日更新:不知道为什么我没有意识到 flatMap 是一个很好的候选者。也许当时它不在核心库中?无论如何,map/reduce 可以用一次调用 flatMap 来代替。 Zip2 也已重命名。新的解决方案是

let c = Zip2Sequence(a,b).flatMap{[$0, $1]} 

如果你在 swift repl 环境中运行它:

> let c = Zip2Sequence(a,b).flatMap{[$0, $1]}
c: [String] = 6 values {
  [0] = "Icon1"
  [1] = "icon1.png"
  [2] = "Icon2"
  [3] = "icon2.png"
  [4] = "Icon3"
  [5] = "icon3.png"
}

原回答如下:

这是我一起玩乐的一种方式

let c = map(Zip2(a,b), { t in
  [t.0, t.1]
})

let d = c.reduce([], +)

或内联

let c = map(Zip2(a,b), { t in
  [t.0, t.1]
}).reduce([], +)

压缩似乎是不必要的。我想有更好的方法来做到这一点。但基本上,我将它们压缩在一起,然后将每个元组转换为一个数组,然后展平数组的数组。

最后,更短一点:

let c = map(Zip2(a,b)){ [$0.0, $0.1] }.reduce([], +)

关于iphone - 你如何在 Swift 中连接两个数组并保持每个数组的顺序? (快速交错数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356689/

相关文章:

iphone - 禁用 tableHeaderView(不要与节标题混淆)滚动

iphone - 触摸移动时拖动图像变慢

.net - 在 VB.NET 中对多维数组进行排序

Java快速访问数组项

java - 显示选择排序和快速排序

ios - 隐藏 iPhone 中的标签栏问题?

ios - 如何更改 iphone 应用程序中的语言运行时?

java - 跳水比赛Java程序中的for循环问题

c++ - 使用比较器网络对固定长度数组进行非常快速的排序

javascript - 用于排序的数据表自定义下拉列表