我使用数组[[Int]]的数组在地图中存储坐标。 例如,我想将所有的“ 2”替换为“ 1”。 为此,我创建了2个for循环,用于定义数组空间并检查内容。 这不是很灵活,仅适用于已定义大小的数组。
private func remove2fromArray(currentArray: [[Int]]) -> [[Int]] {
var newArray : [[Int]] = currentArray
for section in 0...14 {
for row in 0...19 {
if newArray[section][row] == 2
{ newArray[section][row] = 1 }
}
}
return newArray
}
有没有一种方法可以只扫描数组的内容以替换数字?
例如 currentArray.findAndReplace(find:2,replace:1)或类似的东西,可以与[[Int]]使用吗?
答案 0 :(得分:2)
您可以这样做:
let result = array.map { subarray in
subarray.map { integer -> Int in
if integer == 2 {
return 1
} else {
return integer
}
}
}
更短:
let result = array.map {
$0.map { integer in
return integer == 2 ? 1 : integer
}
}
还有一线:
let result = array.map { $0.map { $0 == 2 ? 1 : $0 } }
我将尝试用简单的词来解释这里发生的事情:map所做的是,它逐个遍历数组元素并将一个函数应用于该元素。
在我们的示例中,第一个映射在外部数组元素上进行迭代,因此$0
在此引用内部数组(一个接一个)。
第二个映射迭代内部数组的元素。因此,内部映射中的$0
指向内部数组元素的每个元素。