programing

iOS는 다른 배열에서 배열 요소를 신속하게 제거합니다.

kingscode 2021. 1. 17. 10:57
반응형

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가 아닙니다. 유형 추론을 사용하여 다음과 같이 두 배열을 선언하고 초기화 할 수 있습니다.

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

@ Antonio의 솔루션 은 더 성능이 뛰어나지 만 중요한 경우 순서가 유지됩니다.

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

인덱스 배열을 사용하여 요소 제거 :

  1. 문자열 및 인덱스 배열

    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. 문자열 배열

    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"]
    

범위 밖이지만 여기에 있었다면 도움이 될 것입니다. OBJECTIVE-C의 배열에서 subArray 제거

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

hope it will ever help someone :)


You can create sets and then use the subtract method

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

ReferenceURL : https://stackoverflow.com/questions/31984435/ios-swift-remove-elements-of-an-array-from-another-array

반응형