Проверьте, равны ли хотя бы два значения массива - PullRequest
0 голосов
/ 16 сентября 2018

Я на самом деле ищу способ проверить, равны ли два значения массива или более. Вот несколько примеров:

[1, 2, 3] // false
[1, 1, 5] // true
['a', 'b', 'a', 'c'] // true
[10, 10, 10] // true

Я нашел эту функцию, которая выдает 'true', если КАЖДЫЕ значения массива равны, но это не то, что я хотел бы:

[1,1,1,1].every( (val, i, arr) => val === arr[0] ) // true

Ответы [ 12 ]

0 голосов
/ 16 сентября 2018

Вы можете использовать двойной цикл for, где один - это индекс того, что ищется, и внутренний цикл, проверяющий наличие дубликата.

0 голосов
/ 16 сентября 2018

Этот алгоритм довольно неэффективен (O (n ^ 2), поиск методом грубой силы), но он работает:

function has_dupes(arr) {
  return arr.some((x, i) => arr.includes(x, i+1));
}

console.log(has_dupes([1, 2, 3]));
console.log(has_dupes([1, 1, 5]));
console.log(has_dupes(['a', 'b', 'a', 'c']));
console.log(has_dupes([10, 10, 10]));

Для каждого элемента x при некотором индексе i мы проверяем, содержит ли подмассив, начинающийся с i+1, другое значение, равное x.

...