如何检查数组中的元素是否存在于另一个数组中
How to check if an element in an array exists in another array
我有两个不同的字符串数组,array1
和 array2
,其中我想找出 array1
中的元素是否也存在于 array2
中而不修改 array1
中的元素,但 array1
中的值包括额外的字符,包括冒号 :
.
和冒号之后的字符
array1 = ["unit 1 : Unit 1","unit 2 : Unit 2","unit 3 : Unit 3","test : Test", "system1"]
array2 = ["unit 1","unit 2","unit 3","test"]
我尝试使用 include?
但它不起作用。
array1.each do |element|
#see if element exists in array 2
if array2.include? element
#print the name of that element
puts element
end
end
我该如何处理?
修复您的方法,您可以将 element
与 space
+:
+space
分开,并获取 first
块进行检查。而不是 if array2.include? element
使用
if array2.include? element.split(' : ').first
# Gather the prefixes from array1, without modifying array1:
array1_prefixes = array1.map { |s| s.split(" : ").first }
# Figure out which elements array1 and array2 have in common
common_elements = array1_prefixes & array2
# => ["unit 1", "unit 2", "unit 3", "test"]
此解决方案依赖于执行集合交集的 Array#& 运算符。
我认为此处使用的最易读的方法可能是 startwith?
,但如果您知道一个键不能是另一个键的子字符串。
查看所有密钥是否到位:
array2.all? do |item|
array1.any?{|keyval| keyval.startwith? item }
end
我有两个不同的字符串数组,array1
和 array2
,其中我想找出 array1
中的元素是否也存在于 array2
中而不修改 array1
中的元素,但 array1
中的值包括额外的字符,包括冒号 :
.
array1 = ["unit 1 : Unit 1","unit 2 : Unit 2","unit 3 : Unit 3","test : Test", "system1"]
array2 = ["unit 1","unit 2","unit 3","test"]
我尝试使用 include?
但它不起作用。
array1.each do |element|
#see if element exists in array 2
if array2.include? element
#print the name of that element
puts element
end
end
我该如何处理?
修复您的方法,您可以将 element
与 space
+:
+space
分开,并获取 first
块进行检查。而不是 if array2.include? element
使用
if array2.include? element.split(' : ').first
# Gather the prefixes from array1, without modifying array1:
array1_prefixes = array1.map { |s| s.split(" : ").first }
# Figure out which elements array1 and array2 have in common
common_elements = array1_prefixes & array2
# => ["unit 1", "unit 2", "unit 3", "test"]
此解决方案依赖于执行集合交集的 Array#& 运算符。
我认为此处使用的最易读的方法可能是 startwith?
,但如果您知道一个键不能是另一个键的子字符串。
查看所有密钥是否到位:
array2.all? do |item|
array1.any?{|keyval| keyval.startwith? item }
end