如何将数组中的每个元素与多个条件进行比较?
how to compare every element in array with multiples conditions?
我有一个字符串,我需要为多个条件传递该字符串的每个字符...
我想要什么
如果该字符串的一个字符满足多个条件之一,则不为下一个字符评估此条件,而是为其余字符评估其余条件。另一件事是我需要知道何时满足所有条件。最好的形式或最佳方式是什么?
我做了什么
我尝试使用 jquery $.each 传递多个条件的每个元素,我遍历所有条件并逐步执行每个条件的所有字符串。这会告诉我字符串中的某个元素何时满足其中一个条件,但不会告诉我整个字符串何时满足所有条件。
// Multiple conditions
const conditions = [
{
isInvalid: function(str) {
return !str.match(/[a-z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[A-Z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[0-9]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[\!\@\#$\%\^\&\*]/g);
}
},
{
isInvalid: function(input) {
return str.length < 8;
}
},
];
const stringToCheck = 'mystring';
$.each( conditions , ( i, condition ) => {
const isInvalid = condition.isInvalid( mystring );
if ( isInvalid ) {
return true
} else {
retur false
}
});
您可以在每次条件通过时将一些值保存到数组中,然后您可以将该数组的长度与条件数组进行比较
// Multiple conditions
const conditions = [
{
isInvalid: function(str) {
return !str.match(/[a-z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[A-Z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[0-9]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[\!\@\#$\%\^\&\*]/g);
}
},
{
isInvalid: function(input) {
return str.length < 8;
}
},
];
const stringToCheck = 'mystring';
const results = [];
$.each( conditions , ( i, condition ) => {
const isInvalid = condition.isInvalid( stringToCheck );
if ( isInvalid ) {
return true
} else {
results.push(true);
return false
}
});
if (results.length === conditions.length) {
console.log('All conditions fulfilled');
}
我有一个字符串,我需要为多个条件传递该字符串的每个字符...
我想要什么
如果该字符串的一个字符满足多个条件之一,则不为下一个字符评估此条件,而是为其余字符评估其余条件。另一件事是我需要知道何时满足所有条件。最好的形式或最佳方式是什么?
我做了什么
我尝试使用 jquery $.each 传递多个条件的每个元素,我遍历所有条件并逐步执行每个条件的所有字符串。这会告诉我字符串中的某个元素何时满足其中一个条件,但不会告诉我整个字符串何时满足所有条件。
// Multiple conditions
const conditions = [
{
isInvalid: function(str) {
return !str.match(/[a-z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[A-Z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[0-9]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[\!\@\#$\%\^\&\*]/g);
}
},
{
isInvalid: function(input) {
return str.length < 8;
}
},
];
const stringToCheck = 'mystring';
$.each( conditions , ( i, condition ) => {
const isInvalid = condition.isInvalid( mystring );
if ( isInvalid ) {
return true
} else {
retur false
}
});
您可以在每次条件通过时将一些值保存到数组中,然后您可以将该数组的长度与条件数组进行比较
// Multiple conditions
const conditions = [
{
isInvalid: function(str) {
return !str.match(/[a-z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[A-Z]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[0-9]/g);
}
},
{
isInvalid: function(str) {
return !str.match(/[\!\@\#$\%\^\&\*]/g);
}
},
{
isInvalid: function(input) {
return str.length < 8;
}
},
];
const stringToCheck = 'mystring';
const results = [];
$.each( conditions , ( i, condition ) => {
const isInvalid = condition.isInvalid( stringToCheck );
if ( isInvalid ) {
return true
} else {
results.push(true);
return false
}
});
if (results.length === conditions.length) {
console.log('All conditions fulfilled');
}