该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