У меня есть многомерный массив, как:рубин Извлечение массива из многомерного массива
arr1 = [["text1", 1], ["text2", 2], [" text3", 3], [" text4", 4], ["text5", 5], ["text6", 6], ["text7", 7]]
и другой
arr2 = [2,3,6]
Я хочу, чтобы извлечь весь массив, если он содержит элементы arr2. Таким образом, результат должен быть:
arr = [["text2", 2], [" text3", 3], ["text6", 6]].
Я пробовал много способов, но не смог получить результат. Попытки такие как:
arr1.each { |elem| arr2.each { |x| elem.delete_if{ |u| elem.include?(x) } } }
и
arr2.map { |x| arr1.map{|key, val| val.include?(x) }}
Может кто-нибудь, пожалуйста, помогите?
Почему бы не 'arr1.select {| a | (a & arr2) .any? } 'или' arr1.find_all {| a | (a & arr2) .any? } ', поскольку вы выбираете/находите вещи, а не более общую инъекцию/сокращение? –
Выбор @muistooshort определенно лучше, чем создание нового массива (что я и сделал), я отредактирую ответ (раньше я этого не делал, потому что уже были предоставлены решения с 'select'). –