Ruby:如何检查两数组元素一致性、同索引匹配并优化输出?
解决方案
实现代码
arr = [1,4,6,3] arr2 = [3,4,3,6] # 处理同索引元素匹配的情况,输出"O" arr.each_with_index do |item, idx| puts "O" if item == arr2[idx] end # 计算两数组的所有共同元素(自动去重) all_common_elements = arr & arr2 # 筛选出同索引匹配的元素(去重避免重复计算) index_matched_elements = arr.each_with_index.filter { |item, idx| item == arr2[idx] }.uniq # 若存在"元素在另一数组但不同索引"的情况,输出一次"X" puts "X" unless (all_common_elements - index_matched_elements).empty?
运行结果
O X
逻辑说明
- 同索引匹配输出"O":通过
each_with_index遍历数组,逐个对比对应索引的元素,相等则输出"O"。 - 避免重复输出"X":
- 用
arr & arr2快速获取两数组的所有共同元素(自动去重); - 筛选出已经在同索引位置匹配的元素,再从共同元素中剔除这部分;
- 只要剩余元素不为空,说明存在"元素存在但不同索引"的情况,仅输出一次"X"。
- 用
如果你的需求是每个不同的"存在但不同索引"元素各输出一次"X",可以把最后一步的puts "X"改成:
(all_common_elements - index_matched_elements).each { puts "X" }
这种情况下运行结果会是:
O X X
内容的提问来源于stack exchange,提问作者Revanth Rockie
相关产品推荐
相关产品推荐

