小编典典

Swift:配对数组元素的最佳方法是什么

swift

我遇到了一个问题,需要成对地遍历数组。最好的方法是什么?或者,作为替代方案,将Array转换为成对的Array(然后可以正常迭代)的最佳方法是什么?

这是我得到的最好的。它必须outputvar,而且不是很漂亮。有没有更好的办法?

let input = [1, 2, 3, 4, 5, 6]

var output = [(Int, Int)]()

for i in stride(from: 0, to: input.count - 1, by: 2) {
    output.append((input[i], input[i+1]))
}


print(output) // [(1, 2), (3, 4), (5, 6)]

// let desiredOutput = [(1, 2), (3, 4), (5, 6)]
// print(desiredOutput)

阅读 274

收藏
2020-07-07

共1个答案

小编典典

您可以 映射 跨步而不是对其进行迭代,从而可以将结果作为 常量获取:

let input = [1, 2, 3, 4, 5, 6]

let output = stride(from: 0, to: input.count - 1, by: 2).map {
    (input[$0], input[$0+1])
}

print(output) // [(1, 2), (3, 4), (5, 6)]

如果只需要遍历对,并且给定的数组很大,那么避免创建带有延迟映射的中间数组可能是有利的:

for (left, right) in stride(from: 0, to: input.count - 1, by: 2)
    .lazy
    .map( { (input[$0], input[$0+1]) } ) {

    print(left, right)

}
2020-07-07