Сортировать массив по порядку другого массива с повторяющимися элементами

Решенный, отсутствует параметр «uploads» при создании строки авторизации.

-1
задан Vasil Garov 19 January 2019 в 20:59
поделиться

1 ответ

Я создал это для «детской площадки»):

struct Model {
    let id: String
    let placeId: String

    init(id: String, placeId: String) {
        self.id = id
        self.placeId = placeId
    }
}

extension Model {
    static func all() -> [Model] {
        let ids = ["ITCAw554sCHlN3A6q7Yl",
                   "n50cavoOJeRkjoRj11j3",
                   "TE9ubEqV0tw0Hf4h8tk7",
                   "TE9ubEqV0tw0Hf4h8tk7",
                   "TE9ubEqV0tw0Hf4h8tk7",
                   "ITCAw554sCHlN3A6q7Yl",
                   "mkCs25zSf3J8QTvpS81b",
                   "TE9ubEqV0tw0Hf4h8tk7",
                   "Gc5lnHAKWm1OyeMkA9e7",
                   "n50cavoOJeRkjoRj11j3",
                   "mkCs25zSf3J8QTvpS81b",
                   "mkCs25zSf3J8QTvpS81b",
                   "ITCAw554sCHlN3A6q7Yl",
                   "X9WyrvEE253keNdlbVZc",
                   "ITCAw554sCHlN3A6q7Yl"]
        var models: [Model] = []
        for (index, anId) in ids.enumerated() {
            let aModel = Model(id: anId, placeId: String(index))
            models.append(aModel)
        }
        return models
    }
}

Затем я сделал это:

let initialModels = Model.all()
let shuffled = initialModels.shuffled()
print("shuffled:\n\(shuffled)")

Итак, shuffled находится в неправильном «порядке». [ 1113]

Проблема с вашей текущей сортировкой в ​​том, что id не уникален. Вам нужно отсортировать по уникальному идентификатору, либо вычисленному, используя сравнение по нескольким свойствам и т. Д. Кроме того, вы не можете определить, какой из них встречается среди найденных вхождений, что, по вашему мнению, является комбинацией id и [ 119] свойства.

let initialValues: [(String, String)] = initialModels.map({ ([112].id, [112].placeId) })

Для того, чтобы у вас было:

func sort(by idsAndPlaceId: [(String, String)]) -> [Model]

Тогда, потому что я не хотел использовать self и т. Д., Но это можно было бы адаптировать:

[114 ]

Вывод:

[115]gt;shuffled:
[Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "0"), 
Model(id: "n50cavoOJeRkjoRj11j3", placeId: "1"), 
Model(id: "mkCs25zSf3J8QTvpS81b", placeId: "10"), 
Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "5"),
Model(id: "X9WyrvEE253keNdlbVZc", placeId: "13"), 
Model(id: "n50cavoOJeRkjoRj11j3", placeId: "9"), 
Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "12"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "4"), 
Model(id: "mkCs25zSf3J8QTvpS81b", placeId: "11"), 
Model(id: "Gc5lnHAKWm1OyeMkA9e7", placeId: "8"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "3"), 
Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "14"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "2"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "7"), 
Model(id: "mkCs25zSf3J8QTvpS81b", placeId: "6")]
[115]gt;resorted:
[Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "0"), 
Model(id: "n50cavoOJeRkjoRj11j3", placeId: "1"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "2"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "3"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "4"), 
Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "5"), 
Model(id: "mkCs25zSf3J8QTvpS81b", placeId: "6"), 
Model(id: "TE9ubEqV0tw0Hf4h8tk7", placeId: "7"), 
Model(id: "Gc5lnHAKWm1OyeMkA9e7", placeId: "8"), 
Model(id: "n50cavoOJeRkjoRj11j3", placeId: "9"), 
Model(id: "mkCs25zSf3J8QTvpS81b", placeId: "10"), 
Model(id: "mkCs25zSf3J8QTvpS81b", placeId: "11"),
Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "12"), 
Model(id: "X9WyrvEE253keNdlbVZc", placeId: "13"), 
Model(id: "ITCAw554sCHlN3A6q7Yl", placeId: "14")]
0
ответ дан Larme 19 January 2019 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: