簡體   English   中英

在 JavaScript 中附加條件作為數組長度

[英]Append a condition as array length in 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]);

只是我想附加到&&條件作為數組的長度。 我怎樣才能簡單地制作一個“條件”?

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

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

您可以創建一個函數來驗證值是否不存在

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']);

以下應該可以解決問題。

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;
  }
}

您可以嘗試遍歷數組:

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

Georg 的解決方案非常好,但我想這更進一步。 你可以簡單地這樣做。

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

回答這個問題: “如何在 JavaScript 中巧妙地通過數組長度創建條件?”

我認為你可以這樣做:

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

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

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

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

console.log(cond2);  // true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM