2017-04-23 136 views
2

我想檢查一個數組的所有元素是否與undefined不同。 array_main包含9個元素。如何縮短此JavaScript if語句?

我創建了一個if如下:

// Function checking is there a tie - 0:0 
var check_if_tie = function() { 
    if(array_main[0] !== undefined && array_main[1] !== undefined && 
     array_main[2] !== undefined && array_main[3] !== undefined && 
     array_main[4] !== undefined && array_main[5] !== undefined && 
     array_main[6] !== undefined && array_main[7] !== undefined && 
     array_main[8] !== undefined) { 
     alert("TIE!/REMIS!"); 
     return false; 
    } else { 
     console.log('Continue playing'); 
     return false; 
    } 
}; 

是否有可能縮短這個if不知何故?

+1

哪些陣列的其他可能的值? –

+0

陣列的其他可能值是0和1 – p7adams

+0

@ p7adams,我是第一個使用'every'方法提供解決方案的人。 :) –

回答

4

假設你想從array_main陣列的每個元素迭代,可以使用Array#every

它將返回true如果元素從給定的陣列滿足!== undefined條件。如果至少有一個元素沒有通過它,它將返回false

var array_main = [1,2,3]; 
 

 
var check_if_tie = function() { 
 
    if (array_main.every(v => v !== undefined)) { 
 
    alert("TIE!/REMIS!"); 
 
    return false; 
 
    } else { 
 
    console.log('Continue playing'); 
 
    return false; 
 
    } 
 
} 
 

 
check_if_tie();

+1

array.every()函數幫助我解決了我的問題。 這是我的腳本的一部分,適合我的作品。 //函數檢查是來自未定義的數組diff的元素。 var check_if_tie = function(element,index,array){ return(element!== undefined); } //功能檢查是否有TIE。 var display_if_tie = function(){ \t array_main.every(check_if_tie); (array_main.every(check_if_tie)){ \t setTimeout(function(){alert('TIE/REMIS')},600);(array_main.every(check_if_tie))\t \t \t} else { \t \t assign_zero(); \t \t控制檯。日誌('繼續播放'); \t} }; – p7adams

0

您可以使用every方法,該方法接受callback方法。

array_main.every(function(item){ 
    return item!=undefined; 
}); 

您還可以使用ES6接受arrow功能。

array_main.every(item=>item!=undefined); 

下面是一個簡單的例子:

var array_main=new Array(9).fill(undefined); 
 
console.log(array_main.every(function(item){ 
 
    return item!=undefined; 
 
}));

0
var check_if_tie = function(){ 
    for(elem in array_main) 
    { 
     if(array_main[elem] == undefined) 
     { 
      alert("TIE!/REMIS!"); 
      return false; 
     } 
    } 
    console.log("Continue playing"); 
    return false; 
}; 
2

有許多的辦法,你可以做this.One的則檢查未定義的索引。

var array_main= [1,3,4,54,5,undefined,4,54] 
 
if(array_main.indexOf(undefined) > -1) { 
 
    alert("TIE!/REMIS!"); 
 

 
} else { 
 
    console.log('Continue playing'); 
 

 
}

+0

我想我會在這個if語句中使用某種循環。 – p7adams