【问题标题】:how to compare every element in array with multiples conditions?如何将数组中的每个元素与多个条件进行比较?
【发布时间】:2019-09-16 23:52:59
【问题描述】:

我有一个字符串,我需要将该字符串的每个字符传递给多个条件...

我想要什么

如果该字符串的一个字符满足多个条件之一,则不对下一个字符评估此条件,而是为剩余字符评估剩余条件。另一件事是我需要知道所有条件何时都已满足。最好的形式或最佳方式是什么?

我做了什么

我尝试使用 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
    }
});

【问题讨论】:

    标签: javascript jquery arrays string conditional


    【解决方案1】:

    您可以在每次条件通过时将一些值保存到数组中,然后您可以将该数组的长度与条件数组进行比较

    // 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');
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      相关资源
      最近更新 更多