2

[JavaScript] Set Difference of Two Arrays

 2 years ago
source link: http://siongui.github.io/2018/03/15/javascript-set-difference-of-two-arrays/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

[JavaScript] Set Difference of Two Arrays

March 15, 2018

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");

btn.addEventListener("click", function(e) {
  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:

[1][JavaScript] Intersection of Two Arrays

[2][JavaScript] Union of Two Arrays


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK