简体   繁体   中英

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

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM