我有这样一个数组:
arr['key1'] = true;
arr['key2'] = true;
arr['key3'] = true;
...
arr['keyN'] = true;
如何确定,是否有人键入“虚假”值?
答案 0 :(得分:8)
不幸的是,直到最近才这样做的唯一方法是遍历数组;如果你在基于浏览器的应用程序中使用它,你可能必须这样做。 ECMAScript第5版(新的JavaScript)中有新的数组功能,允许您以稍微不同的方式执行此操作,但只有一些浏览器支持它们(我不确定它们是否一定适用)。
但是你在问题中描述的更多的是地图(或“字典;”有时称为关联数组)而不是数组(基于数字的索引事物)。在JavaScript中,“数组”通常用于表示数字索引的数组(例如,通过[]
或new Array
创建),而“object”通常用于地图(因为所有JavaScript对象都是地图) 。 (这可能有点令人困惑,因为数组是对象。但不要担心。)所以这是一个数组:
var a = ['one', 'two', 'three'];
...而这是一个对象(“地图”,“字典”,“关联数组”):
var o = {key1: 'one', key2: 'two', key3: 'three'};
您使用非数字索引表明您确实在使用地图,而不是数组。搜索循环在地图上看起来像这样:
var key, found;
found = false;
for (key in arr) {
if (arr.hasOwnProperty(key)) {
if (!arr[key]) { // <== There are alternatives, see notes below
found = true;
break;
}
}
}
我使用if (!arr[key])
来检查false
值。这实际上会停留在false
,undefined
,null
或空字符串上。如果您确实想要false
,请改用if (arr[key] === false)
。
答案 1 :(得分:3)
for(key in arr){
var value = arr[key];
if(!value){
//do stuff
}
}
答案 2 :(得分:2)
function hasFalse(arr) {
for (i in arr) {
if (!arr[i]) {
return true;
}
}
return false;
}
只要找到一个false就会返回。
答案 3 :(得分:0)
有一个jquery方法可以在javascript数组中找到任何值
$。inArray(false,arr);
如果找不到这样的匹配,则返回-1
答案 4 :(得分:-1)
你是Javascript新手吗?
for(var i = 0; i < arr.length; i++) {
if(arr[i] === false) {
// do something
}
}