arrays - 检查某些数组值是否相等
问题描述
我正在寻找一种方法来检查数组的某些值是否相等,这是一个示例:
[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] ))
谢谢
解决方案
如果仅保留不同元素获得的集合小于原始集合,则存在重复元素:
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
推荐阅读
- coq - 如何简化 Coq 中 True -> P 形式的假设?
- xcode - 从 TableView customCell 中的 textFiel 获取文本
- authentication - AWS 放大身份验证,启用仅登录 - 不注册
- c# - 将表单数据从客户端发送到服务器时的正确数据格式
- django - POST 400:错误请求 - 使用 Django REST API 和 React
- ruby-on-rails - Rails & TinyTDS - 连接到本地数据库
- javascript - Eve-NG 控制台选择如何工作?
- spring-boot - spring boot 中有没有办法手动调用异常建议?
- flutter - 当 TextHelp 可见时 Flutter TextFormField 向上移动
- javascript - 如何创建一个函数来使用 Javascript 验证电子邮件和用户名?