作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我使用 Array of Array [[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 - 循环遍历 Array of Array [[Int]] 的智能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562308/
我是一名优秀的程序员,十分优秀!