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]]的智能方法的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:如何使用 for 循环来循环数组

Swift2 - 根据另一个 INT 数组的排序顺序对多个数组进行排序

如何将 Int 数组转换为字符串? Swift 中的数组

For循环用于搜索数组,Swift [重复]

循环一个 json 文件并填充一个数组 Swift

swift 将任意长度的字节数组转换为Swift Int