the ! is the logical NOT operator, it flips the boolean value of whatever it is put in front of
so arr1.includes(item) returns or true or false, and with the ! it will become the opposite value
=> : Arrow function, equivalent to an anonymous function with a special this context
! : Negates the boolean evaluation of an immediate expression, for example !true equals to false and viceversa.
.includes : An ES7 (modern JS) array method to determine if the argument passed to it is present in the list that you’re operating the method on. It’s the same as the old way: arr1.indexOf(item) >= 0 which some people also express it as !== -1 (not equal to minus one).
|| : Boolean operator “or” which means that at least one of the two expressions should be true for the result to be true, otherwise it yields false (if both operands are false).
In general it reads:
A function that receives an item as an argument and returns the following assessment:
Is the item present in arr1or present in arr2?
And where does the item come from? From an array that contains all of the objects from the arr1 and arr2
This challenge is supposed to be a set operation so IDK if it passes the challenge at all because a set isn’t supposed to have repeated elements (in case one of the two arrays were to have repeated elements ofc).