Lijith Vipin
Lijith Vipin

Reputation: 1906

Swift 3 Remove objects from an array that are not present in another array and maintaining order

Array1 = [Washington, Franklin, Florida, Alaska, California, Georgia]

Array2 = [California, Washington, Georgia]

I want to get

Array1 = [Washington, California, Georgia]

Upvotes: 0

Views: 101

Answers (4)

rv7284
rv7284

Reputation: 1102

try this

let filteredArray = array1.filter({Array2.contains($0)})

Upvotes: 2

iOS_MIB
iOS_MIB

Reputation: 1895

You can use filter for achieving desired output

Using filter:

let array1 = ["Washington", "Franklin", "Florida", "Alaska", "California", "Georgia"]
let array2 = ["California", "Washington", "Georgia"]

let aryCommonElements = array1.filter { array2.contains($0)}

Output:

["Washington", "California", "Georgia"]

Hope this will help you :)

Upvotes: 2

San Elinu
San Elinu

Reputation: 46

var array1 = ["Washington", "Franklin", "Florida", "Alaska", "California", "Georgia"]
var array2 = ["California", "Washington", "Georgia"]

let filterArray = array1.filter {
    array2.contains($0)
}

The filterArray is what you want

Upvotes: 3

Nikhlesh Bagdiya
Nikhlesh Bagdiya

Reputation: 4466

If you want to retrieve only common elements than use:

In Swift 3

let Array1 = ["Washington", "Franklin", "Florida", "Alaska", "California", "Georgia"]

let Array2 = ["California", "Washington", "Georgia"]

let common = GetCommonElements(lhs: Array1, rhs: Array2)

print(common)

func GetCommonElements <T, U> (lhs: T, rhs: U) -> [T.Iterator.Element] where T: Sequence, U: Sequence, T.Iterator.Element: Equatable, T.Iterator.Element == U.Iterator.Element {
       var returnArray:[T.Iterator.Element] = []
       for lhsItem in lhs {
           for rhsItem in rhs {
               if lhsItem == rhsItem {
                  returnArray.append(lhsItem)
               }
           }
       }
       return returnArray
}

Upvotes: 1

Related Questions