Я создал сценарий, который позволяет мне импортировать CSV в виде многомерного массива, запускать поиск по каждой строке массива и если строка поиска соответствует любому элементу в строке возвращает всю строку в новый массив, написав:Поиск элемента массива для всех элементов другого массива
require 'csv'
array = CSV.read('CSVlist.csv') #=> [["Name1", "8675309"],["Name2", "5557891"], ["Name3", "5557890"]]
shifted_array = Array.new
results_array = Array.new
while array.empty? == false
shifted_array = array.shift
shifted_array.each do |f|
if f =~ /8675309/
shifted_array = shifted_array.join(",") #=> ["Name1,8675309"]
results_array.push(shifted_array)
end
end
end
puts results_array #=> ["Name1,8675309"]
Выше работает правильно. Однако вместо поиска только одной строки (/8675309/
выше) я хочу выполнить поиск по массиву и вернуть любой элемент из другого массива (который является импортированным текстовым файлом). Я создал массив сравнения, но как мне найти основной массив (array
) против другого массива (numbers_array
, ниже) вместо строки?
require 'csv'
array = CSV.read('CSVlist.csv') #=> [["Name1", "8675309"],["Name2", "5557891"], ["Name3", "5557890"]]
shifted_array = Array.new
results_array = Array.new
numbers_array = File.readlines("list1.txt").map &:split #=> ["5551234", "5557890", "8675309"]
while array.empty? == false
shifted_array = array.shift
shifted_array.each do |f|
if f =~ ???? # want the search to compare f to any element in numbers_array
shifted_array = shifted_array.join(",")
results_array.push(shifted_array)
end
end
end
puts results_array #=> desired output is ["Name1,8675409", "Name3,5557890"]
Не размещайте код. Напишите то, что вы пытаетесь сделать (желательно пример ввода, вывода). – sawa
@sawa код хороший, тоже !. Оба они лучше одного или другого. – Jon