Skip to content
Advertisement

Javascript check if any elements in array are equal

How should I make a function that loops through an array, and checks if any elements are equal

Example:

[a, b, c, d] //false
[a, b, a, d] //true

EDIT:

I want to use it with nested arrays, like so:

const a = [[1,2,3],[4,5,6]] //false
const b = [[1,2,3],[4,5,1]] //true

EDIT again: I want the nested arrays to be the exact same

const a = [[1,2],[4,5]] //false
const b = [[1,2],[1,2]] //true
const c = [[1,2][3,4][1,2]] //true

Advertisement

Answer

You can easily do this using Set as:

const getResult = (arr) => new Set(arr).size !== arr.length;

You can add all elements to set and then compare size of set and length of arr.

You will get different length if any element is repeated else same

const arr1 = ['a', 'b', 'c', 'd']; //false
const arr2 = ['a', 'b', 'a', 'd']; //true

const getResult = (arr) => new Set(arr).size !== arr.length;
console.log(getResult(arr1));
console.log(getResult(arr2));

If you want to use nested array then you can flat it before seinding arguments to getResult function as:

const a = [
    [1, 2, 3],
    [4, 5, 6],
]; //false
const b = [
    [1, 2, 3],
    [4, 5, 1],
]; //true

const getResult = (arr) => new Set(arr).size !== arr.length;
console.log(getResult(a.flat()));
console.log(getResult(b.flat()));
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement