gpt4 book ai didi

arrays - 如何根据第二个数组的部分或全部内容过滤数组

转载 作者:行者123 更新时间:2023-11-28 05:55:29 24 4
gpt4 key购买 nike

我正在尝试根据第二个数组的内容过滤一个数组。第一个数组的每个元素都应该针对第二个数组中的所有元素进行测试。

我已经测试了以下内容,我可以让过滤器只为选定的索引工作,即 0。

var analysisArray = [String]()
var patternNameArray = [String]()

let filteredArray = analysisArray.filter {$0.isEmpty == false && $0.contains(patternNameArray[0])}

我根据 Swift 3 filter array of objects with elements of array 尝试了以下操作

let filteredArray = analysisArray.filter {$0.isEmpty == false && $0.contains(where: { patternNameArray.contains($0) })}

但我收到错误消息“调用中存在无关参数标签‘where:’”。

如何遍历第二个数组中的所有元素?

最佳答案

您在 $0 上调用函数 contains,它是 patternArray 的一个元素,它是一个 String . String 的 contains 函数的签名是这样的:

public func contains(where predicate: (Character) throws -> Bool) rethrows -> Bool

如果我没看错的话,你正在向它传递一个闭包,希望在数组上调用 contains

我认为您只是混淆了闭包中的占位符。如果您正在努力实现我认为的目标,它可能看起来像这样:

import Foundation

var analysisArray = ["Hello", "Goodbye", "Balloon", "Kite"]
var patternNameArray = ["oo", "ll"]

let filteredArray = analysisArray.filter { analysisString in
analysisString.isEmpty == false &&
patternNameArray.contains { pattern in
analysisString.contains(pattern)
}
}

print(filteredArray) // ["Hello", "Goodbye", "Balloon"]

为了简洁起见,我对它进行了一些扩展(在编码时从来都不是一件坏事),以便更清楚地了解哪些闭包变量在哪里使用。这个 playground 的输出是 ["Hello", "Goodbye", "Balloon"],它是 analysisArray 中的每个字符串,其中包含 patternNameArray 中的模式之一。

希望我已经正确阅读了您的问题。

关于arrays - 如何根据第二个数组的部分或全部内容过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51603988/

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