在JavaScript Array中按值查找

时间:2010-04-07 10:26:27

标签: javascript arrays

我有这样一个数组:

arr['key1'] = true;
arr['key2'] = true;
arr['key3'] = true;
...
arr['keyN'] = true;

如何确定,是否有人键入“虚假”值?

5 个答案:

答案 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值。这实际上会停留在falseundefinednull或空字符串上。如果您确实想要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)

  1. 循环遍历数组中的每个值(for-loop)
  2. 检查值以查看它是否为假。
  3. 你是Javascript新手吗?

    for(var i = 0; i < arr.length; i++) {
        if(arr[i] === false) {
            // do something
        }
    }