【问题标题】:Swift how to read through all indexes of array using for loop with index [i]Swift如何使用带有索引[i]的for循环读取数组的所有索引
【发布时间】:2018-08-28 09:33:57
【问题描述】:

到目前为止,我的代码仅适用于 1 个索引,但我希望它读取数组中的所有现有索引。元素数组可以携带多组数字,例如 数组 ["2,2,5" , "5,2,1"] 包含 2 个索引 [0] 和 [1]

var element = Array[0]
let splitData = element.components(separatedBy: ",")

// split data will always contain 3 values.
var value1 = splitData[0]
var value2 = splitData[1]
var value3 = splitData[2]

print("value 1 is : " + value1 + " value 2 is : " + value2 + " value 3 is: " + value3)

Array ["2,2,5" , "5,2,1"] 时这段代码的输出是:

value 1 is : 2 value 2 is : 2 value 3 is : 5

正如输出所示,我如何遍历 Array 的所有索引以显示它们的 3 个值中的每一个。

我希望输出是:

value 1 is : 2 value 2 is : 2 value 3 is : 5
value 1 is : 5 value 2 is : 2 value 3 is : 1

我相信我需要使用 for 循环,但我不确定如何将其应用于此。我对编码很陌生。任何帮助将不胜感激

【问题讨论】:

  • 您提到使用for 循环,但您的代码没有尝试使用循环。展示你使用循环的尝试。
  • 你说你不确定如何使用循环,所以我认为你最好从长远的角度阅读Swift,而不是在这里寻找快速的解决方案。在我看来,Apple 文档非常好。
  • @rmaddy 我创建了一个 for 循环,但是我不知道在 0 中将什么作为 i 的参数。
  • 将这些信息放在您的原始问题中会很有帮助。

标签: arrays swift for-loop arraylist element


【解决方案1】:
for i in 0..<array.count {
    var element = array[i]
    let splitData = element.components(separatedBy: ",")

    // split data will always contain 3 values.
    var value1 = splitData[0]
    var value2 = splitData[1]
    var value3 = splitData[2]

    print("value 1 is : " + value1 + " value 2 is : " + value2 + " value 3 is: " + value3)
}

【讨论】:

  • 既然这是公认的答案,您能否通过将 Array[i] 更改为 array[i] 来使其编译
【解决方案2】:

您可以使用以下两种解决方案,具体取决于哪种方法对您来说是最好的。

1) 如果您的目标是将["3,4,5", "5,6", "1", "4,9,0"] 之类的数组转换为扁平化 版本["3", "4", "5", "5", "6", "1", "4", "9", "0"],您可以通过以下方式使用flatMap 运算符轻松完成:

let myArray = ["3,4,5", "5,6", "1", "4,9,0"]
let flattenedArray = myArray.flatMap { $0.components(separatedBy: ",") }

然后你可以像其他数组一样迭代它,

for (index, element) in myArray.enumerated() {
    print("value \(index) is: \(element)")
}

2) 如果您只想迭代它并保持关卡,您可以使用以下代码。

let myArray = ["3,4,5", "5,6", "1", "4,9,0"]

for elementsSeparatedByCommas in myArray {
    let elements = elementsSeparatedByCommas.components(separatedBy: ",")
    print(elements.enumerated().map { "value \($0) is: \($1)" }.joined(separator: " "))
}

希望有帮助!

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 2020-07-07
    • 2021-07-16
    • 1970-01-01
    • 2012-05-19
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多