Home > Enterprise >  Javascript check if any elements in array are equal
Javascript check if any elements in array are equal

Time:08-07

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

CodePudding user response:

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

CodePudding user response:

Simplest way would be to loop through the array and check if the first index of the element is same as current index like this:

let a = [1, 2, 3, 4]
let b = [1, 2, 3, 1]
    let isRepeated = (a) => {
      for (let i = 0; i < a.length; i  ) {
        if (a.indexOf(a[i]) !== i)
          return true;
      }

      return false;
    }

    console.log(isRepeated(a));
    console.log(isRepeated(b));

  • Related