gpt4 book ai didi

arrays - Swift - 循环遍历 Array of Array [[Int]] 的智能方法

转载 作者:可可西里 更新时间:2023-11-01 01:07:24 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com