我想检查嵌套数组中是否存在特定值。
我有以下代码,它只适用于一维数组:
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
非常感谢提前!
答案 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')