首页 > 解决方案 > 检查某些数组值是否相等

问题描述

我正在寻找一种方法来检查数组的某些值是否相等,这是一个示例:

[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] ))

谢谢

标签: arraysequals

解决方案


如果仅保留不同元素获得的集合小于原始集合,则存在重复元素:

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

推荐阅读