arrays - 遍历 Swift 数组并更改值

标签 arrays swift xcode mapreduce

我需要更改 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但我需要一个增加的值(value)。
使用 map 可以通过哪种方式实现?
myArray.map( { $0["index"] = ...? } )

谢谢你的帮助!

最佳答案

柜台在 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 }

关于arrays - 遍历 Swift 数组并更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973104/

相关文章:

ios - MagicalRecord saveWithBlock 用法现在无法在 XCode 7 beta 5 下编译

ios - 在后台检查服务器端应用程序通知,在 Swift 中

objective-c - NSThread 分离新线程选择器 : Crash only in release build in Xcode 7 + Swift 2. 0

java - 单击 : read the field name and print it out in TOAST

javascript - 将对象循环到另一个对象/数组中

c++ - 如何在 main 中使用指针数组?

c++ - 如何在 Xcode C++ 控制台应用程序中使用 dlib

javascript - React JS : Filtering an array of objects by another array of objects. 如何顺序执行四个函数,包括。多次 API 调用

ios - 在for循环后按值对字典数组进行排序?

ios - 无法使用 [AnyObject] 类型的参数列表调用“'setViewController'”