function removeDupes(a1, a2) {
var index = {}, result = [], i, l;
for (i=0, l=a2.length; i<l; i++) {
index['-' + a2[i]] = "";
}
for (i=0, l=a1.length; i<l; i++) {
if (index['-' + a1[i]] !== "") result.push(a1[i]);
}
return result;
}
- Объект
index
предназначен для быстрого поиска значений, поэтому мы можем быстро проверить их существование. '-' +
предназначен для переноса факта, что значения могут бытькак toString
, которые также существуют как свойства объекта.Если в префиксе есть буква, с которой обычные идентификаторы JavaScript не могут начинаться, каждое значение будет безопасным для использования в качестве ключа объекта.
Пример:
removeDupes([1,2,3,4], [2,4,5]);
// -> [1,3]
removeDupes([2,4,5], [1,2,3,4]);
// -> [5]