Проверьте, равны ли НЕКОТОРЫЕ значения массива - PullRequest
0 голосов
/ 01 сентября 2018

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

[1, 2, 3, 4] //False
[1, 1, 2, 3] //True
['a', 'a', 'a', 'a', ] // True

Я уже нашел этот метод, который возвращает 'true', если значения КАЖДОГО массива равны, но это не то, что я хочу:

console.log([1,1,1,1].every( (val, i, arr) => val === arr[0] ))

Спасибо

1 Ответ

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

Если коллекция, полученная с использованием только отдельных элементов, меньше, чем исходная коллекция, то были дубликаты элементов:

val seq = Seq(1, 1, 2, 3)

seq.distinct.size < seq.size
//=> true

Обычно это выполняется за время O (n) и пространство O (n). Тем не менее, вы также должны иметь возможность сделать его коротким замыканием, чтобы он прерывал работу, как только обнаруживал дублирующийся элемент:

require 'set'

ary = [1, 2, 3, 1]

!ary.each_with_object(Set[]) {|el, set| break if set.include?(el); set << el }
#=> true
...