javascript:构建数组项的条件

时间:2011-01-17 18:12:34

标签: javascript arrays if-statement

如果我有这样的数组:

thisarray = new Array("this", "that", "theotherthing");

我怎么能像这样建立条件:

if(thisarray[0] == thisvar && thisarray[1] == thisvar && thisarray[2] == thisvar) { 
    //do something
}
需要注意的是,我不知道这个项目中有多少项目。我对如何实现这一点感到有点难过。任何帮助将不胜感激。

6 个答案:

答案 0 :(得分:2)

如果你有Javascript 1.6支持,你可以在一行中完成:

if (thisarray.every(function(e) { return (e == thisvar); })) {
  // Do stuff
}

MDN reference

答案 1 :(得分:1)

var valid = true;
for(var i=0; i<thisarray.length && valid; ++i){
    if (thisarray[i] != thisvar)
        valid = false;
}
//use valid
if(valid)
{
    //Do your stuff
}

答案 2 :(得分:1)

您可以使用for循环来“迭代”数组中的项目,每次都检查值。

var result = true;
for(var x=0; x < thisarray.length; x+=1){
    if(thisarray[x] != thisvar){
       result = false;
    }
}
如果数组中的每个项都等于thisvar,则

result为真,如果不匹配则为false。

答案 3 :(得分:1)

你可以写一个函数:

function all(arr, f) {
  for (var i = 0; i < arr.length; ++i)
    if (!f(arr[i], i)) return false;
  return true;
}

然后你可以打电话:

if (all(thisArray, function(a) { return a === thisvar; })) {
  // all equal
}

答案 4 :(得分:0)

更新:我错误地阅读了您的请求以检查是否有任何元素匹配,当您要求的是所有元素匹配时。我在这里留下我的答案,但如果您希望条件对任何比赛都是真的,请参考。

您可以使用for循环遍历元素,如下所示:

for (var i = 0; i < thisarray.length; i++) {
    if (thisarray[i] == thisvar) {
        // do something
        break; // so it doesn't repeat if there are multiple matches
    }
}

答案 5 :(得分:0)

只需要一组实际值和一组预期值,然后比较元素。像这样:

function arraysEqual(actual, expected) {
  if (actual.length !== expected.length) { return false; }
  var count = actual.length;
  for (i = 0; i < count; i++) {
    if (actual[i] !== expected[i]) { return false; }
  }
  return true;
}