如果我有这样的数组:
thisarray = new Array("this", "that", "theotherthing");
我怎么能像这样建立条件:
if(thisarray[0] == thisvar && thisarray[1] == thisvar && thisarray[2] == thisvar) {
//do something
}
需要注意的是,我不知道这个项目中有多少项目。我对如何实现这一点感到有点难过。任何帮助将不胜感激。
答案 0 :(得分:2)
如果你有Javascript 1.6支持,你可以在一行中完成:
if (thisarray.every(function(e) { return (e == thisvar); })) {
// Do stuff
}
答案 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;
}