我怎样才能正确地做 For 循环

how can i do For Loop Properly

我想在数组中的每个第 3 个位置添加“5”

var myList: [String] = ["U.S", "Spain", "China", "Brazil", "India" , "Canada", "Germany", "UK", "Dubai", "Russia", "Japan", "Italy", "France", "Australia", "Thailand", "Mexico"]

var i = 0
for name in 0...myList.count {
    i = i + 1
    if  i % 3 == 0 {
        myList.insert("\(5)", at: i )
    }
}
print("\(myList)")

输出为:

["U.S", "Spain", "China", "5", "Brazil", "India", "5", "Canada", "Germany", "5", "UK", "Dubai", "5", "Russia", "Japan", "5", "Italy", "France", "Australia", "Thailand", "Mexico"]

但是在数组中的第 16 个位置之后,我无法将所有 5 个都放入我的数组中,因为 myList 数组总共有 16 个计数....所以我如何才能正确地将 5 个放入我的数组中

问题在于您正在改变数组(在迭代时更改其元素),因此您实际需要做的是以相反的顺序插入元素。像这样尝试:

var myList = ["U.S", "Spain", "China", "Brazil", "India", "Canada", "Germany", "UK", "Dubai", "Russia", "Japan", "Italy", "France", "Australia", "Thailand", "Mexico" ]

for index in myList.indices.dropFirst().reversed() where index % 3 == 0 {
    myList.insert("5", at: index)
}

print(myList)   // "["U.S", "Spain", "China", "5", "Brazil", "India", "Canada", "5", "Germany", "UK", "Dubai", "5", "Russia", "Japan", "Italy", "5", "France", "Australia", "Thailand", "5", "Mexico"]\n"