I have two arrays like this:
var arrayA = ["Mike", "James", "Stacey", "Steve"] var arrayB = ["Steve", "Gemma", "James", "Lucy"]
As you can see, James
and Steve
match and I want to be able to remove them from arrayA
. How would I write this?
We can use the following JavaScript methods to remove an array element by its value. indexOf() – function is used to find array index number of given value. Return negavie number if the matching element not found. splice() function is used to delete a particular index value and return updated array.
Use the . filter() method on the first array and check if the elements of first array are not present in the second array, Include those elements in the output.
Most efficient way to remove an element from an array, then reduce the size of the array.
@francesco-vadicamo's answer in Swift 2/3/4+
arrayA = arrayA.filter { !arrayB.contains($0) }
The easiest way is by using the new Set
container (added in Swift 1.2 / Xcode 6.3):
var setA = Set(arrayA) var setB = Set(arrayB) // Return a set with all values contained in both A and B let intersection = setA.intersect(setB) // Return a set with all values in A which are not contained in B let diff = setA.subtract(setB)
If you want to reassign the resulting set to arrayA
, simply create a new instance using the copy constructor and assign it to arrayA
:
arrayA = Array(intersection)
The downside is that you have to create 2 new data sets. Note that intersect
doesn't mutate the instance it is invoked in, it just returns a new set.
There are similar methods to add, subtract, etc., you can take a look at them
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With