遍历 Swift 数组并更改值
Iterate through Swift array and change values
我需要更改 Swift 数组的值。
我的第一次尝试只是迭代,但这不起作用,因为我只获得每个元素的副本,并且更改不会影响原始数组。
目标是在每个数组元素中有一个唯一的 "index"。
myArray = [["index": 0], ["index":0], ["index":0], ["index":0]]
counter = 0
for item in myArray {
item["index"] = counter
counter += 1
}
我的下一次尝试是使用地图,但我不知道如何设置递增的值。我可以设置 [=13=]["index"] = 1
但我需要增加值。
使用地图可以通过哪种方式实现?
myArray.map( { [=12=]["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[[=13=]]["index"] = [=13=] }
通过创建一个全新的数组来存储修改后的词典,一种更实用的方法怎么样:
let myArray = [["index": 0], ["index":0], ["index":0], ["index":0]]
let myNewArray = myArray.enumerated().map { index, _ in ["index": index] }
我找到了一个简单的方法,想分享一下。
关键是myArray
的定义。这样就成功了:
let myArray : [NSMutableDictionary] = [["firstDict":1, "otherKey":1], ["secondDict":2, "otherKey":1], ["lastDict":2, "otherKey":1]]
myArray.enumerated().forEach{[=10=].element["index"] = [=10=].offset}
print(myArray)
[{
firstDict = 1;
index = 0;
otherKey = 1;
}, {
index = 1;
otherKey = 1;
secondDict = 2;
}, {
index = 2;
lastDict = 2;
otherKey = 1;
}]
我需要更改 Swift 数组的值。 我的第一次尝试只是迭代,但这不起作用,因为我只获得每个元素的副本,并且更改不会影响原始数组。 目标是在每个数组元素中有一个唯一的 "index"。
myArray = [["index": 0], ["index":0], ["index":0], ["index":0]]
counter = 0
for item in myArray {
item["index"] = counter
counter += 1
}
我的下一次尝试是使用地图,但我不知道如何设置递增的值。我可以设置 [=13=]["index"] = 1
但我需要增加值。
使用地图可以通过哪种方式实现?
myArray.map( { [=12=]["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[[=13=]]["index"] = [=13=] }
通过创建一个全新的数组来存储修改后的词典,一种更实用的方法怎么样:
let myArray = [["index": 0], ["index":0], ["index":0], ["index":0]]
let myNewArray = myArray.enumerated().map { index, _ in ["index": index] }
我找到了一个简单的方法,想分享一下。
关键是myArray
的定义。这样就成功了:
let myArray : [NSMutableDictionary] = [["firstDict":1, "otherKey":1], ["secondDict":2, "otherKey":1], ["lastDict":2, "otherKey":1]]
myArray.enumerated().forEach{[=10=].element["index"] = [=10=].offset}
print(myArray)
[{
firstDict = 1;
index = 0;
otherKey = 1;
}, {
index = 1;
otherKey = 1;
secondDict = 2;
}, {
index = 2;
lastDict = 2;
otherKey = 1;
}]