例如
a = [2,3, 1, 1]
b = [2,7,4,2]
--> c = [2]
我的解決方案是:
c = b.select do>
|em| b.index(em) == a.index(em)
end
但是如果我把它應用到給定的例子中,它就會回傳
。
c = [2, 2]
uj5u.com熱心網友回復:
由于你想對陣列的元素進行比較,zip將是這里的一個很好的選擇。
a.zip(b) # => [[2, 2], [3, 7], [1, 4], [1, 2]]/span>
a.zip(b).select {|a1, b1| a1 == b1}.map(&:first) #[2]/span>
# or in ruby 2.7
a.zip(b).filter_map {|a1, b1| a1 == b1 && a1}。# [2]
uj5u.com熱心網友回復:
a = [2,3, 1, 1]
b = [2,7,4, 2]
c = b.select do |em|
b.index(em) == a.index(em)
end
b.select do |em|取b的第一個元素(也就是2)。b.index(em)找到第一個包含2的索引,也就是第一個的。(索引0)。由于陣列a在同一索引上有一個2,所以整個區塊是真的,元素2被選中。但是最后一個元素的情況也是如此。再次搜索b陣列,在索引0處找到了第一個2。 因此,這個2也被選中了。
a.each_with_index.to_a & b.each_with_index.to_a
這將給你提供共同的元素和它們的索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307595.html
標籤:
