iOS快速从另一个数组中删除数组的元素

我有两个数组

var array1 = new Array ["a", "b", "c", "d", "e"] var array2 = new Array ["a", "c", "d"] 

我想从array1中删除array2的元素

 Result ["b", "e"] 

最简单的方法是将两个数组转换为集合,从第一个减去第二个,将结果转换为数组并将其分配回array1

 array1 = Array(Set(array1).subtracting(array2)) 

请注意,你的代码是无效的Swift – 你可以使用types推断来声明和初始化两个数组,如下所示:

 var array1 = ["a", "b", "c", "d", "e"] var array2 = ["a", "c", "d"] 

@ 安东尼奥的解决scheme是更高性能,但这保留了sorting,如果这是重要的:

 var array1 = ["a", "b", "c", "d", "e"] let array2 = ["a", "c", "d"] array1 = array1.filter { !array2.contains($0) } 

使用索引数组删除元素:

  1. string和索引的数组

     let animals = ["cats", "dogs", "chimps", "moose", "squarrel", "cow"] let indexAnimals = [0, 3, 4] let arrayRemainingAnimals = animals .enumerated() .filter { !indexAnimals.contains($0.offset) } .map { $0.element } print(arrayRemainingAnimals) //result - ["dogs", "chimps", "cow"] 
  2. 整数和索引数组

     var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] let indexesToRemove = [3, 5, 8, 12] numbers = numbers .enumerated() .filter { !indexesToRemove.contains($0.offset) } .map { $0.element } print(numbers) //result - [0, 1, 2, 4, 6, 7, 9, 10, 11] 

使用另一个数组的元素值移除元素

  1. 整数数组

     let arrayResult = numbers.filter { element in return !indexesToRemove.contains(element) } print(arrayResult) //result - [0, 1, 2, 4, 6, 7, 9, 10, 11] 
  2. string的数组

     let arrayLetters = ["a", "b", "c", "d", "e", "f", "g", "h", "i"] let arrayRemoveLetters = ["a", "e", "g", "h"] let arrayRemainingLetters = arrayLetters.filter { !arrayRemoveLetters.contains($0) } print(arrayRemainingLetters) //result - ["b", "c", "d", "f", "i"] 

您可以创build集合,然后使用减法

 let setA = Set(arr1) let setB = Set(arr2) setA.subtract(set2) 

超出范围,但它会帮助我,如果它在这里。 在OBJECTIVE -C中从数组中删除子数组

 NSPredicate* predicate = [NSPredicate predicateWithFormat:@"not (self IN %@)", subArrayToBeDeleted]; NSArray* finalArray = [initialArray filteredArrayUsingPredicate:predicate]; 

希望它会永远帮助别人:)