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