# [JavaScript] Set Difference of Two Arrays

Find the elements in one array but not in the other, i.e., set difference of two arrays. In mathematical term:

A − B = {x ∈ A and x ∉ B}

Try the following demo to get sense of the set difference:

Array A:
Array B:

The idea is to convert the array B to the data structure of key-value pairs, i.e., hash table. The hash table in JavaScript is built-in object type. Then we check if items in array A is in the hash table. If not, append the item to the difference array, and return the difference array after finish.

The following is the code for the demo:

HTML:

```Array A: <input type="text" name="arra" value="[1, 2, 3, 4, 5]"><br>
Array B: <input type="text" name="arrb" value="[2, 3, 5, 7, 11]"><br>
<br>
<button type="button" id="getDiff">Get A - B</button>
<input type="text" name="diff"><br>
```

JavaScript:

```var arra = document.querySelector("input[name='arra']");
var arrb = document.querySelector("input[name='arrb']");
var diff = document.querySelector("input[name='diff']");
var btn = document.querySelector("#getDiff");

var arrayA = eval(arra.value);
var arrayB = eval(arrb.value);
var arrayDiff = [];

var hashTable = {};
for (var i = 0; i < arrayB.length; i++) {
hashTable[arrayB[i]] = true;
}

for (var i = 0; i < arrayA.length; i++) {
if (!hashTable.hasOwnProperty(arrayA[i])) {
arrayDiff.push(arrayA[i]);
}
}

diff.value = JSON.stringify(arrayDiff);
});
```

Tested on: Chromium 64.0.3282.167 on Ubuntu 17.10 (64-bit)

References: