在JavaScript中将条件附加为数组长度

时间:2016-05-31 07:38:14

标签: javascript arrays

如何在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'只是?

我不知道一个简单的方法,所以我手动添加条件。

但我认为这不是一个好方法,我怎么能巧妙地做到这一点?

6 个答案:

答案 0 :(得分: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']);

答案 1 :(得分:0)

以下应该做的伎俩。

<?php

class ClassName
{
    public function a()
    {
        // ...

        return $this;
    }

    public function b($param)
    {
        // ...

        return $this;
    }

    public function c()
    {
        // ...

        return $this;
    }

}

// testing
$obj = new ClassName;

$result = $obj->a()->b('someParam')->c();

答案 2 :(得分:0)

你可以尝试循环遍历数组:

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

答案 3 :(得分:0)

Georg的解决方案非常好,但我想这会更进一步。你可以这样做。

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

答案 4 :(得分:0)

回答这个问题: '如何在JavaScript中巧妙地通过数组长度创建条件?'

我认为你可以这样做:

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

答案 5 :(得分: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