Я нашел this question answered here относительно пересечения двух массивов. Что, если я хочу узнать, что общего между более чем двумя массивами предметов? Что, если я не знаю, сколько там будет массивов?Пересечение более 2 наборов массивов?
UPDATE:
Вот мой код и попытка пересечь ряд неизвестных массивов, но я могу получить только до двух массивов в этом случае, прежде чем я должен беспокоиться о индексе из проблем диапазона и проигрышных наборов в следующем цикле. Я думал о том, чтобы хранить их во временных переменных по мере их прохождения, но я не уверен, что это лучший способ.
//anyArray is an array of string arrays containing
//the items I want to intersect
let count = anyArray.count - 1
//var temp: Array<String>
for index in 0...count {
let item1 = anyArray[index] as! Array<String>
if index < count {
let item2 = anyArray[index + 1] as! Array<String>
let set1 = Set(item1)
let set2 = Set(item2)
let inter = set1.intersect(set2)
print(inter)
}
}
UPDATE 2
Окончательный ответ был комбинацией ответ Филиппа ниже и кода я отправляю здесь. Это отвечает на вопрос «Что, если вы не знаете, сколько массивов будет?»
Хитрость заключалась в установке и инициализации временного набора для пересечения в следующем раунде в цикле. Я должен был инициализировать его, иначе он не позволил бы мне его использовать.
let count = anyArray.count - 1
var inter = Set<String>()
for index in 0...count {
if index == 0 {
let item1 = anyArray[index] as! Array<String>
let item2 = anyArray[index + 1] as! Array<String>
let set1 = Set(item1)
let set2 = Set(item2)
inter = set1.intersect(set2)
} else {
if index < count {
let item = anyArray[index + 1] as! Array<String>
inter = inter.intersect(item)
}
}
}
print(inter)
Вы можете продолжить до пересечения с результатом предыдущей операции. В какой-то момент вы должны знать, сколько у вас есть или, по крайней мере, есть ли у вас другой. –
О, я думал, что результатом была строка ... –