[英]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.