Хорошо, поэтому я хочу отсортировать массив на основе другого массива. Хорошо, так что это звучит довольно запутанно, поэтому позвольте мне объяснить.
Хорошо, давайте сделаем пример приложения о покупке продуктов. Итак, у меня есть такой массив:
var fruitsArray = [String:Int]()
Скажем, значения массива
[apple:32, banana:45, grape:7, strawberry:23]
Хорошо, во-первых, я сортирую этот массив по Int
по убыванию, что дает нам
[banana:45 apple:32, strawberry:23, grape:7]
Хорошо, отлично. Но теперь я хочу массив списков покупок, и каждый элемент этого массива содержит массив еды. Итак, давайте сделаем Struct
...
struct List {
var name:String = ""
var items:[String] = [""]
init(name: String, items: [String) {
self.name = name
self.items = items
}
}
, а затем массив List
...
var shoppingLists = [List]()
наконец, давайте добавим некоторые элементы к shoppingLists
...
[List(name: List 1, items: [banana, pizza, watermelon, apple]),
List(name: List 2, items: [cookie, water, grape, apple]),
List(name: List 3, items: [apple, strawberry, banana, cheese]),
List(name: List 4, items: [apple, strawberry, grape, watermelon])]
Хорошо, вот где это становится довольно сложно. Я хочу отсортировать shoppingLists
, посмотрев массив items
в shoppingLists
и сравнив их с fruitsArray
. Позвольте мне показать вам, что я хочу, чтобы был конечный продукт, а затем я объясню, почему.
sortedShoppingList =
[List(name: List 3, items: [apple, strawberry, banana, cheese]),
List(name: List 4, items: [apple, strawberry, grape, watermelon]),
List(name: List 1, items: [banana, pizza, watermelon, apple]),
List(name: List 2, items: [cookie, water, grape, apple])]
Хорошо, так почему же в мире это сортируется так? Давайте рассмотрим это элемент за элементом. Итак, список 3 находится сверху, потому что он содержит 3 элемента из fruitsArray
. Теперь вы можете сказать, что список 4 также содержит 3 элемента из fruitsArray
, и да, это правда, но список 3 содержит элементы из fruitsArray
, которые имеют более высокий рейтинг. Оба списка 3 и 4 содержат [apple, strawberry]
, но список 3 содержит banana
, а список 4 содержит grape
. Banana
outranksks "grape
, поэтому сначала создаем список 3. Итак, двигаясь дальше, список 1 следует за списком 4, потому что он содержит [apple, banana]
, что по« рангу »выше, чем [apple, grape]
в списке 2.
Хорошо, я действительно надеюсь, что это не смущало. Если у вас есть какие-либо вопросы или мне нужно уточнить, пожалуйста, задавайте! Большое спасибо за чтение этого, и я надеюсь, что вы можете помочь мне.