1

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

2 Answers 2

1

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

Sign up to request clarification or add additional context in comments.

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.