2016-05-31 19 views
-1

如何在JavaScript中巧妙地通過數組長度創建條件?在JavaScript中添加條件作爲數組長度

請參閱以下內容:

var value = ['a','b','c']; 

var array0 = ['apple']; 
var cond0 = value.indexOf(array0[0]) == -1 ; 

var array1 = ['apple', 'banana']; 
var cond1 = value.indexOf(array1[0]) == -1 && value.indexOf(array1[1]) == -1 ; 

// On the same way, 

var array2 = ['apple', 'banana', 'kiwi']; 
var cond2 = value.indexOf(array2[0]) == -1 && value.indexOf(array2[1]) == -1 && value.indexOf(array2[2]); 

只要我想追加到&&條件數組的長度。我怎麼能簡單地做一個'cond'?

我不知道一個簡單的方法,所以我手動追加條件。

但我認爲這不是一個好方法,我該如何巧妙地做到這一點?

+0

'值.indexOf(array1)> - 1' – Rayon

+0

你能否提供'價值'? –

+0

@NinaScholz好吧......但我不需要'價值' – Juntae

回答

0

您可以創建一個函數來驗證,如果值不存在或不是

function notContains(values, array) { 
    for(var i = 0; i < values.length; i++) { 
     for(var j = 0; i < array.length; i++) { 
      if(array[j].indexOf(values[i]) > -1) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 
var values = ['a','b','c']; 
var cond0 = notContains(values, ['apple']); 
var cond1 = notContains(values, ['apple', 'banana']); 
var cond2 = notContains(values, ['apple', 'banana', 'kiwi']); 
0

下應該做的伎倆。

var array2 = ['apple', 'banana', 'kiwi']; 
var cond2 = true; 
for(var idx = 0; idx < array2.length; idx++) { 
    cond2 = cond2 && (value.indexOf(array2[idx]) == -1); 
    if(!cond2) { 
    // its already false, no need to iterate 
    break; 
    } 
} 
0

你可以嘗試通過數組循環:

array2.forEach(function(item){ 
    if(value.indexOf(item) > -1){ 
     .... 
    } 
)); 
0

喬格的解決方案是非常好的,但我想這需要一步一步進一步。你可以簡單地這樣做。

var value = ['a','b','c'], 
 
    array2 = ['apple', 'banana', 'kiwi']; 
 
    check = array2.reduce((p,c) => p = p || value.includes(c),false) 
 
console.log(check);

0

回答這個:'我怎樣才能通過數組長度的條件巧妙地在JavaScript?

我認爲你可以這樣做:

var stop = 0; 
while(stop < value.length){ 
    if(condition){ 
    // do something 
    } 
stop++; 
} 
0

使用Array.some函數(如回調函數返回任何數組元素的truthy值)的優化解決方案:

var value = ['a','b','c'], 
    array2 = ['apple', 'banana', 'kiwi']; 

var cond2 = !array2.some((v) => value.indexOf(v) !== -1); 

console.log(cond2); // true