我有一个对象数组,例如:
让食物 = [apple, orange, peach, pear]
。
每个对象看起来像这样:
let apple : Fruit = [
name: "Apple",
colors: ["red", "yellow", "green", "orange"]
]
我有另一个字符串数组,food
数组应该被过滤:
let avoid = ["red", "yellow"]
我想从 food
数组创建一个新数组,其中 Fruit
对象不包含任何颜色
在 avoid
数组中。所以在这种情况下,Apple
不会出现在 food 数组中,因为它同时包含 red
和 yellow
。
谢谢!
最佳答案
由于您还没有给出任何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
将包含对象 - pear
和 peach
关于arrays - 根据对象属性的字符串数组过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56251693/