我必须根据另一个数组对
这是我的具有多种类型的 自定义类
“SongItem
”的数组
进行排序
String 数组
(必须应用 OR
验证)。
假设我的自定义数组
是:
class SongItem: NSObject {
var songId: String?
var title: String?
var artistName: String?
var isrc: String?
var genreArray = [String]()
}
<SongItem: 0x1c03097e0>
<SongItem: 0x1c03097e0>
<SongItem: 0x1c03097e0>
<SongItem: 0x1c03097e0>
<SongItem: 0x1c03097e0>
<SongItem: 0x1c03097e0>
我有另一个具有三个值的字符串数组
:
genreStringArray = ["Music","Alternative","Blues"]
现在我必须根据另一个字符串数组
过滤
我的自定义数组
。
这是我的代码:
for i in 0..<genreStringArray.count {
let genre = genreStringArray[i]
self.customArray = self.customArray.filter({ $0.genreArray.contains(genre) })
}
因为我在这里使用 for 循环
,所以 filtering
以 AND 方式工作正常,但我必须以 OR 方式过滤它。我的意思是这应该是这样的:
self.datasource = self.datasource.filter { $0.genreArray.contains(genre1) || $0.genreArray.contains(genre2) || $0.genreArray.contains(genre3)}
请任何人给我建议。
最佳答案
这应该可以。
customArray.filter({ !Set($0.genreArray).intersection(Set(genreStringArray)).isEmpty })
不需要额外的 for
循环。只需检查对象的 genreStringArray
和 genreArray
是否具有共同元素。如果是,则将其过滤掉。
提示:您可能应该为您的变量使用更好的命名,以减少混淆和简单。也许是这样的?
class Song {
var id: String?
var title: String?
var artist: String?
var isrc: String? // I don't know what this is!
var genres = [String]()
}
关于arrays - 基于字符串数组对自定义数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55571363/