iOS Swift Как удалить строки в массиве из части строки в другом массиве - PullRequest
0 голосов
/ 24 октября 2018

Я вызываю API-интерфейс, который дает мне дублирующую информацию в двух разных элементах, и я хочу удалить дублирующую информацию из той, что перед тем, как отобразить ответ в моем UITableView.Я осмотрелся и долго играл с этим.Как вы делаете следующее?:

var array1 = ["Hello get", "How rid", "Are of", "You? Me"]

let array2 = ["get "," rid "," of "," me "]

Я пробовал среди многих других вещей: array1 = array1.map {! array2.contains ($ 0)}

Lookingчтобы получить массив:

array1 = ["Hello", "How", "Are", "You?"]

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Мой ответ немного длиннее, но он охватит случай, если какое-либо слово из массива 2 существует более чем в одном слове в массиве1

var cleaned = [String]()
array2.forEach( {word in
    let subArray = array1.filter( {$0.contains(word) })
    subArray.forEach( { found in
        var temp = found
        temp.removeSubrange(found.range(of: word)!)
        cleaned.append(temp.trimmingCharacters(in: .whitespaces))
    })
})
0 голосов
/ 24 октября 2018

Возможное решение с использованием zip и map.

zip объединяет оба массива путем создания кортежей, а map удаляет строки во втором массиве плюс начальный пробел из первогос регулярным выражением.

let array1 = ["Hello get", "How rid", "Are of", "You? me"]
let array2 = ["get", "rid", "of", "me"]

let result = zip(array1, array2).map{ $0.0.replacingOccurrences(of: "\\s" + $0.1, with:"", options:.regularExpression) } 
// ["Hello", "How", "Are", "You?"]
...