arrays - 根据对象属性的字符串数组过滤对象数组

标签 arrays swift

我有一个对象数组,例如:

让食物 = [apple, orange, peach, pear]

每个对象看起来像这样:

let apple : Fruit = [
  name: "Apple",
  colors: ["red", "yellow", "green", "orange"]
]

我有另一个字符串数组,food 数组应该被过滤:

let avoid = ["red", "yellow"]

我想从 food 数组创建一个新数组,其中 Fruit 对象不包含任何颜色avoid 数组中。所以在这种情况下,Apple 不会出现在 food 数组中,因为它同时包含 redyellow

谢谢!

最佳答案

由于您还没有给出任何Fruit对象的定义,我正在考虑一个以供引用。

struct Fruit {
    let name: String
    let colors: [String]
}

创建食物数组,

let apple = Fruit(name: "Apple", colors: ["red", "yellow", "green", "orange"])
let orange = Fruit(name: "Orange", colors: ["red", "green", "orange"])
let peach = Fruit(name: "Peach", colors: ["green", "orange"])
let pear = Fruit(name: "Pear", colors: [ "green"])
let food = [apple, orange, peach, pear]

要使用avoid 数组过滤 food 数组,我们可以使用Set intersection 方法,即

let avoid = ["red", "yellow"]
let filteredFruits = food.filter { return Set($0.colors).intersection(avoid).isEmpty }
print(filteredFruits.map({ $0.name })) //["Peach", "Pear"]

filteredFruits 将包含对象 - pearpeach

关于arrays - 根据对象属性的字符串数组过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56251693/

相关文章:

ios - Swift - 为 TableView 设置最大行数并删除最旧的行以便为新行让路

arrays - Swift 中具有引用和类型成员的数组相等

python - 使用两个轴排序约束对三维 numpy 数组进行排序

ios - 退出 'while' 循环后数组项被删除?

ios - 检查 firebase 数据库中是否存在用户名。

ios - CoreData 并发问题

ios - SCNCylinder 上的设置内容(图像)反转(翻转)

javascript - 在 TypeScript 中声明一个数组

javascript - 在 Javascript 中用正则表达式替换独立字符串

java - 从 CSV 文件自动创建数组时,索引 1 超出长度 1 的范围错误