arrays - 遍历 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"] = ...? } )
谢谢你的帮助!
解决方案
循环中的计数器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 }
推荐阅读
- jquery - Laravel 控制器返回索引视图而不是 json 响应
- javascript - Django PDF 中包含的图表
- sql - 使用 googleSQL 从字符串中仅返回 1-10000 个数字
- vue.js - vee-validate 按钮验证
- generics - 为什么不能为通用选项克隆 None
当 T 不实现克隆? - python - Python请求在一定时间后检索网站的html
- python - Python fernet 无效令牌
- alexa - 如何在屏幕中获取当前呈现的文档的令牌?
- javascript - 结束然后在反应中创建一个表格行
- windows - 如何在执行 .vbs 脚本检查数字锁定启用时隐藏/摆脱显示 .cmd 控制台和图标 powershell?