Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 筛选阵列阵列时扫描所有/特定阵列值_Swift - Fatal编程技术网

Swift 筛选阵列阵列时扫描所有/特定阵列值

Swift 筛选阵列阵列时扫描所有/特定阵列值,swift,Swift,以下是示例代码: var myArray = [["one", "two"], ["three", "four"]] var filteredArray = myArray.filter{ value in value[1] != "four"} filteredArray //[["one", "two"]] 这段代码应该过滤掉任何包含“四”的数组。它做得很好,但这仅仅是因为我将值[1]作为特定数组的目标,因为我知道它包含“四”。 我应该如何重新格式化这段代码,这样我就不需要指定特定的数

以下是示例代码:

var myArray = [["one", "two"], ["three", "four"]]

var filteredArray = myArray.filter{ value in value[1] != "four"}

filteredArray //[["one", "two"]]
这段代码应该过滤掉任何包含“四”的数组。它做得很好,但这仅仅是因为我将值[1]作为特定数组的目标,因为我知道它包含“四”。 我应该如何重新格式化这段代码,这样我就不需要指定特定的数组,这样它就会扫描其中的所有值?当使用“for循环”时,我们可以使用一个声明的“i”变量。但是如何使用.filter函数实现类似的功能呢


此外,更具体地说,我如何重新格式化此代码,以便可以过滤数组并排除所有具有“四”但特别是作为其第二个值(索引[1])的数组,并且如果它们在任何其他索引位置具有“四”,则不包括在前面的要求中。同样,在没有“i”变量的情况下,我不知道如何做。非常感谢您的帮助。

知道筛选器回调在每次迭代时都会收到一个内部数组,我们可以在该数组上使用
reduce
来检查它是否包含
四个
字符串:

var filteredArray = myArray.filter {
    let count = $0.reduce(0) {
        $0 + ($1 == "four" ? 1 : 0)
    }

    return count == 0
}

reduce
闭包中,如果一个或多个元素是
four
,则返回值将是大于零的整数。

智能it帮助我获得tsk