gpt4 book ai didi

arrays - 基于字符串数组对自定义数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 06:53:23 25 4
gpt4 key购买 nike

我必须根据另一个数组对自定义类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 循环。只需检查对象的 genreStringArraygenreArray 是否具有共同元素。如果是,则将其过滤掉。


提示:您可能应该为您的变量使用更好的命名,以减少混淆和简单。也许是这样的?

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/

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