2016-05-31 2 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

Не могли бы вы предоставить "value"? –

+0

@NinaScholz хорошо ... но мне не нужно значение 'value' – 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