in
キーワードは、このようなオブジェクトで使用することを目的としています(MDNサイトから取得)
// Arrays
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees; // returns true
3 in trees; // returns true
6 in trees; // returns false
"bay" in trees; // returns false (you must specify the index number,
// not the value at that index)
"length" in trees; // returns true (length is an Array property)
// Predefined objects
"PI" in Math; // returns true
var myString = new String("coral");
"length" in myString; // returns true
// Custom objects
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar; // returns true
"model" in mycar; // returns true
配列はオブジェクトと考えることができます。配列['zero', 'one', 'two']
はオブジェクトのようなものです{0: 'zero', 1: 'one', 2: 'two'}
したがって、for (i in ['zero', 'one', 'two'])
javascriptを作成すると、を作成したかのように扱われますfor (i in {0: 'zero', 1: 'one', 2: 'two'})
。
オブジェクトに次のような特定のプロパティ値があるかどうかを確認できます。
function isIn(val, obj) {
for (var i in obj) if (obj[i] == val) return true;
return false;
}
isIn('car', ['car', 'horse']) // returns true
任意のオブジェクトだけでなく配列を具体的にチェックしている場合は、その引数のインデックスを返すindexOf
メソッドを使用できます。または、配列の-1に引数が含まれていません。
function isInArray(val, arr) {return arr.indexOf(val) > -1;}
isIn('car', ['car', 'horse']) // returns true