首页 > 解决方案 > 遍历 Swift 数组并更改值

问题描述

我需要更改 Swift 数组的值。我的第一次尝试是迭代,但这不起作用,因为我只得到每个元素的副本,并且更改不会影响原始数组。目标是在每个数组元素中都有一个唯一的“索引”。

myArray = [["index": 0], ["index":0], ["index":0], ["index":0]]

counter = 0
for item in myArray {
  item["index"] = counter
  counter += 1
}

我的下一次尝试是使用 map 但我不知道如何设置递增值。我可以设置,$0["index"] = 1但我需要增加值。使用地图可以通过哪种方式实现?

myArray.map( { $0["index"] = ...? } )

谢谢你的帮助!

标签: arraysswiftxcodemapreduce

解决方案


循环中的计数器for是一个常数。要使其可变,您可以使用:

for var item in myArray { ... }

但这在这里没有用,因为我们会变异item而不是myArray.

你可以用这种方式改变元素myArray

var myArray = [["index": 0], ["index":0], ["index":0], ["index":0]]

var counter = 0

for i in myArray.indices {
    myArray[i]["index"] = counter
    counter += 1
}

print(myArray) //[["index": 0], ["index": 1], ["index": 2], ["index": 3]]

这里counter不需要变量:

for i in myArray.indices {
    myArray[i]["index"] = i
}

编写上述内容的一种功能方式是:

myArray.indices.forEach { myArray[$0]["index"] = $0 }

推荐阅读