【问题标题】:Logical && of an array of strings字符串数组的逻辑 &&
【发布时间】:2015-06-02 21:22:55
【问题描述】:

我正在尝试获取一个 JavaScript 字符串数组,并根据其中的所有元素返回一个布尔值。非空字符串之间的逻辑 && 应返回 true。我找到了使用!!("String1" && "String2") 在两个字符串之间返回布尔值的简单方法。

但是,如果我将这两个字符串放在像 var myArr = ["String1","String2"] 这样的数组中,我该怎么做呢?

【问题讨论】:

    标签: javascript arrays string boolean


    【解决方案1】:

    这样的事情怎么样?

    function checkArr(arr) {
      for (var i = 0, length = arr.length; i < length; i++) {
        if (!arr[i]) return false;
      }
      return true;
    }
    
    checkArr(['a','b']); // true
    checkArr(['a','']); // false
    

    或者你可以用一个略显老套的班轮来做到这一点:

    return !arr.join(',').match(/(^$|^,|,,|,$)/);
    

    【讨论】:

    • 单行有点太老套了,它会在一些包含逗号的字符串上失败。如果必须,最好使用不太常见的分隔符。顺便说一句,testmatch 更适合这里。
    【解决方案2】:

    这是使用every 的一个很好的解决方案:

    function isEmpty(strings){
        return !strings.every(function(str){
            return !!str;
        });
    }
    

    Demo on JSFiddle

    【讨论】:

      【解决方案3】:

      您正在寻找 array every methodBoolean cast 的组合:

      var myArr = ["String1","String2"]
      myArr.every(Boolean) // true
      

      事实上,您可以使用识别功能,或者String,但为了正确传达您的意图,最好将其明确:

      myArr.every(function(str) { return str.length > 0; }) // true
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-24
        • 1970-01-01
        • 1970-01-01
        • 2013-12-15
        • 2021-11-28
        相关资源
        最近更新 更多