How to get symmetric difference between two arrays in JavaScript ?
Last Updated :
27 May, 2024
In this article, we will see how to get the symmetric difference between two arrays using JavaScript.
In Mathematics the symmetric difference between two sets A and B is represented as A Δ B = (A – B) ∪ (B – A)
- It is defined as a set of all elements that are present in either set A or set B but not in both.
- In simple words, common elements are discarded from both sets.
For example:
A = { 1, 2, 3, 4, 5, 6}
B = { 4, 5, 6, 7 }
A - B = { 1, 2, 3, 4, 5, 6} - { 4, 5, 6, 7 }
= { 1, 2, 3 }
B - A = { 4, 5, 6, 7 } - { 1, 2, 3, 4, 5, 6}
= { 7, 1, 2, 3 }
A Δ B = ( A - B ) ∪ ( B - A )
= { 1, 2, 3 } ∪ { 7, 1, 2, 3 }
A Δ B = { 1, 2, 3, 7 }
We can achieve this with the following approaches:
Approaches to get Symmetric difference:
Approach 1: Naive method – using Javascript for loop.
Example: In this example, we will be finding the symmetric difference of the two arrays using Javascript for loop.
JavaScript
// Defining two arrays and a resultant array
const a = [1, 2, 3, 4, 5, 7, 9];
const b = [5, 6, 7, 8, 9];
const result = [];
// Defining the function with two
// arguments array inputs
function difference(arr1, arr2) {
let i = 0,
j = 0;
let flag = false;
/* For array 1 */
for (i = 0; i < arr1.length; i++) {
// Resetting the flag and the
// other array iterator
j = 0;
flag = false;
while (j != arr2.length) {
if (arr1[i] == arr2[j]) {
flag = true;
break;
}
j++;
}
/* If value is not present in the
second array then push that value
to the resultant array */
if (!flag) {
result.push(arr1[i]);
}
}
flag = false;
// For array 2
for (i = 0; i < arr2.length; i++) {
// Resetting the flag and the
// other array iterator
j = 0;
flag = false;
while (j != arr1.length) {
if (arr2[i] == arr1[j]) {
flag = true;
break;
}
j++;
}
/* If value is not present in the
first array then push that value
to the resultant array */
if (!flag) {
result.push(arr2[i]);
}
}
return result;
}
console.log(difference(a, b));
Output[ 1, 2, 3, 4, 6, 8 ]
In this approach, we use the filter() method on the first array and check if each item is not present in the second array using the includes() method. The resulting array contains the elements that are present in the first array but not in the second array.
Syntax:
array1.filter((element) => !array2.includes(element));
Example: In this example, we use filter() and includes() methods to get the difference between the arrays as shown:
JavaScript
// Defining two arrays and a resultant array
const array1 = [1, 2, 3, 4, 5, 7, 9];
const array2 = [5, 6, 7, 8, 9];
// Getting elements in array1 but not array2
const difference1 = array1.filter(
(element) => !array2.includes(element));
// Getting elements in array2 but not array1
const difference2 = array2.filter(
(element) => !array1.includes(element));
// Combining the differences
const result = [...difference1, ...difference2];
// Showing the output
console.log(result);
Output[ 1, 2, 3, 4, 6, 8 ]
Approach 3: Using Set and filter() Method
In this approach, the arrays are converted to Sets using the Set constructor. The Set data structure only allows unique values. By filtering out the elements from the first set that also exist in the second Set, we can obtain the difference.
Syntax:
const difference = [...set1].filter((element) => !set2.has(element));
Example: In this example, we will get the differences of arrays using set and filter() method and show the combined result as output:
JavaScript
// Defining two arrays
const array1 = [1, 2, 3, 4, 5, 7, 9];
const array2 = [5, 6, 7, 8, 9];
// Converting arrrays to sets using set method
const set1 = new Set(array1);
const set2 = new Set(array2);
// Geting the differences using filter method
const difference1 = [...set1].filter((element) => !set2.has(element));
const difference2 = [...set2].filter((element) => !set1.has(element));
// Combining differnce arrays
const result = [...difference1, ...difference2];
// Showing the result as output
console.log(result);
Output[ 1, 2, 3, 4, 6, 8 ]
This method iterates over the first array and checks if each element is present in the second array using the includes() method. It accumulates the elements that are not found in the second array, resulting in the difference between the two arrays.
Syntax:
const difference = array1.reduce((result, element) => {
if (array2.indexOf(element) === -1) {
result.push(element);
}
return result;
}, []);
Example: In this example, we will get the differences of arrays using reduce() and includes() methods and show the combined result as output:
JavaScript
// Defining two arrays
const array1 = [1, 2, 3, 4, 5, 7, 9];
const array2 = [5, 6, 7, 8, 9];
// Getting elemment in array1 but not in array2
const difference1 = array1.reduce((result, element) => {
if (array2.indexOf(element) === -1) {
result.push(element);
}
return result;
}, []);
// Getting elemements in array2 but not in array1
const difference2 = array2.reduce((result, element) => {
if (array1.indexOf(element) === -1) {
result.push(element);
}
return result;
}, []);
// Combining the diffeerence using spread operator
const result = [...difference1, ...difference2];
// Show the result as output
console.log(result);
Output[ 1, 2, 3, 4, 6, 8 ]
Using Lodash Library
Using the Lodash library, the xor function computes the symmetric difference between two arrays, returning an array of elements that are unique to each input array. This approach simplifies the process by leveraging Lodash’s built-in utility functions.
Example: In this example we are using lodash library’s xor function to compute the symmetric difference between array1 and array2, returning elements present in one array but not both. The result is logged to the console.
JavaScript
const _ = require('lodash');
const array1 = [1, 2, 3];
const array2 = [3, 4, 5];
const symmetricDifference = _.xor(array1, array2);
console.log(symmetricDifference);
Output:
[1, 2, 4, 5]
Similar Reads
How to Get the Difference Between Two Arrays in JavaScript ?
These are the following ways to Get the Difference Between Two Arrays in JavaScript: 1. Using the filter() and includes() Methods - Mostly UsedWe can use the filter() method on the first array and check if each item is not present in the second array using the includes() method. The resulting array
3 min read
Get the Difference between Two Sets using JavaScript
To get the difference between two sets in JavaScript, you need to identify elements present in the first set but not in the second. This involves iterating over the first set and filtering out elements that are also found in the second set, ensuring efficient comparison. We can get the difference be
2 min read
Print Difference between Two Objects in JavaScript ?
Printing the difference between two objects in JavaScript involves comparing the properties of the two objects and identifying the discrepancies between them. This can include properties that exist in one object but not in the other, as well as properties with differing values. These are the followi
3 min read
How to Convert Array to Set in JavaScript?
The Set constructor is used to convert the array into set in JavaScript. It is useful to clean the array and remove duplicate elements. Converting Array to Set means transforming the array elements into a Set object. Using Set ConstructorThe Set constructor in JavaScript directly converts an array i
2 min read
Get the relative timestamp difference between dates in JavaScript
Given the 2 JavaScript dates and the job is to get the relative time difference between them(eg.. 2 hours ago, 2.5 days ago, etc.) Here 2 approaches are discussed with the help of javaScript. Approach 1: Get the prevDate and currDate in a variable using Date() object .Calculate the milliseconds in M
4 min read
How to calculate minutes between two dates in JavaScript ?
Given two dates and the task is to get the number of minutes between them using JavaScript. Approach: Initialize both Date object.Subtract the older date from the new date. It will give the number of milliseconds from 1 January 1970.Convert milliseconds to minutes. Example 1: This example uses the c
2 min read
How to Flatten a Given Array up to Specified Depth in JavaScript?
Flatten an array in JavaScript is a common task when dealing with nested arrays. The concept of "flatten" means to convert a multi-dimensional array into a single-dimensional array. When you need to control the depth of flattening, JavaScript provides methods to handle this efficiently. This process
2 min read
How to Remove Multiple Elements from Array in JavaScript?
Here are various methods to remove multiple elements from an array in JavaScript 1. Using filter() MethodThe filter() method creates a new array with the elements that pass the condition. This method does not change the original array. [GFGTABS] JavaScript let a = [1, 2, 3, 4, 5]; let remove = [2, 4
4 min read
How to Get all Elements Except First in JavaScript Array?
Here are the various methods to get all elements except the first in JavaScript Array 1. Using for loopWe will use a for loop to grab all the elements except the first. We know that in an array the first element is present at index '0'. [GFGTABS] JavaScript const a1 = [1, 2, 3, 4, 5]; const a2 = [];
4 min read
How to check two numbers are approximately equal in JavaScript ?
In this article, we are given two numbers and the task is to check whether the given numbers are approximately equal to each other or not. If both numbers are approximately the same then print true otherwise print false. Example: Input: num1 = 10.3 num2 = 10 Output: true Approach: To check whether t
2 min read