如何检查多维数组中是否存在特定值?

时间:2018-03-09 03:31:40

标签: ruby

我想检查嵌套数组中是否存在特定值。

我有以下代码,它只适用于一维数组:

import javax.swing.JOptionPane;

public final class CineVivero extends javax.swing.JFrame {

    public void popups() {

        Object[] opening = {
            "Bienvenido a Movie Counter"
            + "\n Esta aplicación fue hecha para Multicines Metro Vivero."
            + "\n Aquí se podra registrar el porcentaje de ocupación de"
            + "\n las instalaciones y los ingresos desde el momento que se"
            + "\n abre la aplicación.",};

        JOptionPane.showMessageDialog(null, opening, "Movie Counter", 2);
    }

    public CineVivero() {
        setSize(100, 100);
        setLocationRelativeTo(null);
        popups();
    }

    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {

                new CineVivero().setVisible(true);
            }
        });
    }
}

我也尝试过使用rassoc和assoc,但同样只能部分工作。

a = [['hello', 'hi', 'hey'], ['bye', 'seeya', 'goodbye']]

def find_a_word(array, word)
  return "Found your word, #{word}" if array.index(word)
end

非常感谢提前!

4 个答案:

答案 0 :(得分:5)

如果你知道你只有一个数组数组(即恰好有两个级别),那么你可以使用Array#any?Array#include?

array.any? { |a| a.include?(word) }

any?include?都会短路,因此一旦找到目标,它们就会返回true

答案 1 :(得分:3)

array.flatten.index(word)有用吗?

答案 2 :(得分:2)

还可以使用 Array#flatten Array#include?

> a = [['hello', 'hi', 'hey'], ['bye', 'seeya', 'goodbye']]
> a.flatten.include?("hey")
#=> true
>  a.flatten.include?("Hey")
#=> false 

不区分大小写

> word = "hEY"
> a.flatten.map(&:downcase).include?(word.downcase)
#=> true
> word = "HeY"
> a.flatten.map(&:downcase).include?(word.downcase)
#=> true
> word = "HEY"
> a.flatten.map(&:downcase).include?(word.downcase)
#=> true

答案 3 :(得分:1)

另一种方式是,

array.flatten.member?('word')