我使用数组 [[Int]] 的数组来存储 map 中的坐标。 例如,我想用“1”替换所有“2”。 为此,我创建了 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]]?
最佳答案
你可以这样做:
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
指的是内部数组元素的每个元素。
关于arrays - Swift - 循环数组数组的智能方法 [[Int]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562308/