Java と JavaScript で配列やリストや連想配列 (マップ) に値があるか調べる記法の比較
TL; DR
オブジェクトに対して、指定の値が存在すれば true を返してくれるようなメソッド類を調べた。
| Object | Java | JavaScript | 
|---|---|---|
| Array | Arrays.AsList(array).contains(value) | 
      Array#includes(value)・Array#indexOf(value) >= 0 | 
    
| List | List#contains(value) | 
      - | 
| Key in Map | Map#containsKey(key) | 
      Key in Map | 
| Value in Map | Map#containsValue(value) | 
      ※ #values() … 自作関数 Map.prototype.values().indexOf(value) >= 0 | 
    
Java で配列に特定の値があるか
String[] array = { "hoge", "fuga", "foo", "bar" };
// Arrays#asList() で List に変換し、List#contains() を使う
if(Arrays.asList(array).contains("hoge")) {
  // "hoge" があったよ
}
- 参考 : http://java.keicode.com/lang/arrays-contain-check.php
 - 参考 : 【Java】配列に特定の値が含まれているか確認する - オープンリファレンス
 
Java でリストに特定の値があるか
上述のとおり List#contains() が使える。内部的には List#indexOf() を使っているようだ。
List<String> list = new ArrayList<String>();
list.add("hoge");
list.add("fuga");
list.add("foo");
list.add("bar");
if(list.contains("hoge")) {
  // "hoge" があったよ
}
if(list.indexOf("fuga") >= 0) {
  // "fuga" があったよ
}
if(list.indexOf("something") < 0) {
  // #indexOf() は値がないときは -1 を返すから、この場合は "something" がなかったよ
}
Java でマップに特定のキーがあるか
Map<String, String> map = new HashMap<String, String>();
map.put("Apple", "りんご");
map.put("Tangerine", "みかん");
map.put("Peach", "もも");
if(map.containsKey("Apple")) {
  // Map 中に "Apple" というキーがあるよ
}
- 参考 : HashMap | Javaコード入門
 
Java でマップに特定のデータ (Value) があるか
キーではなく値の方の存在チェック。
Map<String, String> map = new HashMap<String, String>();
map.put("Apple", "りんご");
map.put("Tangerine", "みかん");
map.put("Peach", "もも");
if(map.containsValue("もも")) {
  // Map 中に "もも" というデータがあるよ
}
JavaScript で配列に特定の値があるか
JavaScript の配列とリストはほぼ同義なのでこれで。
// Java の配列は {} で囲むけど JavaScript は [] なんだよね…よく間違える
var array = [ "hoge", "fuga", "foo", "bar" ];
if(array.includes("foo")) {
  // 配列に "foo" があるよ
}
if(array.indexOf("fuga") >= 0) {
  // #indexOf() でも "fuga" があることが分かるよ
}
Array.prototype.includes や Array.prototype.indexOf がないブラウザの場合は、自分で追加すれば使える。以下に代替コードが紹介されているのでどうぞ。
- 参考 : Javascriptで配列にある値が存在するかどうかを確認する方法について - 主にプログラムを勉強するブログ
 - 参考 : Array.prototype.includes() - JavaScript | MDN
 - 参考 : Array.prototype.indexOf() - JavaScript | MDN
 - 参考 : Javascriptで配列内に特定の要素が存在するかどうかの判定 - Qiita
 
JavaScript で連想配列に特定のキーがあるか
連想配列。オブジェクト。ハッシュ。マップ。どれもだいたい同じ。
var hash = {
  "Apple": "りんご",
  "Tangerine": "みかん",
  "Peach": "もも"
};
// in という演算子で分かる
if("Peach" in hash) {
  // Hash 中に "Peach" というキーがあるよ
}
JavaScript で連想配列に特定のデータ (Value) があるか
調べたけどネイティブだと存在しなさそう。Underscore.js には Object.values() というメソッドがあって、これが連想配列の値たちを取り出した配列を返してくれるので、これをパクって定義すると使えそう。
// 連想配列 (オブジェクト) のデータ (値) を配列にして返すメソッドを自前で定義する
Object.prototype.values = function() {
  var o = this;
  var r = [];
  for(var k in o) {
    if(o.hasOwnProperty(k)) {
      r.push(o[k]);
    }
  }
  return r;
};
var hash = {
  "Apple": "りんご",
  "Tangerine": "みかん",
  "Peach": "もも"
};
if(hash.values().indexOf("もも") >= 0) {
  // Hash 中に "もも" というデータがあるよ
}