Swift - 循环数组数组[[Int]]的智能方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - 循环数组数组[[Int]]的智能方法相关的知识,希望对你有一定的参考价值。
我在地图中使用存储坐标的Array [[Int]]数组。例如,我想用“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 } }
我将尝试用简单的词语解释这里发生的事情:地图的作用是逐个遍历数组元素并在元素上应用函数。
在我们的示例中,第一个映射遍历外部数组元素,因此这里的$0
指的是内部数组(一个接一个)。
第二个映射遍历内部数组的元素。因此内部映射中的$0
指的是内部数组元素的每个元素。
以上是关于Swift - 循环数组数组[[Int]]的智能方法的主要内容,如果未能解决你的问题,请参考以下文章