【问题标题】:How to return boolean true/false in javascript for an unknown type variable's value?如何在javascript中为未知类型变量的值返回布尔真/假?
【发布时间】:2019-06-25 05:05:57
【问题描述】:

如果我们知道它是什么类型的变量,它更容易识别布尔真/假,并且在 javascript 中我们可以使用 Boolean 对象来检查它,Boolean 主要工作但它没有' t 反映空数组或对象,javascript 中是否有任何函数来检查变量的布尔值,其中该变量可以包含任何值,如数字、字符串、布尔值、数组或对象?现在我写了一个简单的函数共享作为答案,也考虑了任何简单的解决方案。

谢谢

【问题讨论】:

  • typeof myVar === 'boolean' 工作正常。
  • 抱歉问题标题令人困惑,我已经更新了问题标题。所以目的不是检查变量类型,而是返回变量值的真/假。
  • 当一个值(不是布尔值)应该返回 true 或 false 时,我仍然不清楚规则是什么。 There are clearly defined rules for when Boolean() returns true or false.。您在回答中做出了一些未在您的问题中列举的决定,这意味着其他人不可能“正确”回答它。
  • 你正在重写规则,什么是“真实的”,什么不是你正在尝试做的事情。你确定你(或下一个开发者)不会被这个咬到吗?

标签: javascript boolean


【解决方案1】:

//检查布尔变量的函数 -

function bool(myVar){
    //check the variable type as js considers array as object
    let varType = typeof myVar

    //check if it is true object
    if(varType != 'object') return Boolean(myVar)

    if(Array.isArray(myVar)) return Boolean(myVar.length)

    for(var key in myVar) {
        if(myVar.hasOwnProperty(key))
            return true
    }
    return false    
}

【讨论】:

    【解决方案2】:

    它应该适用于大多数情况

    var data= [],{},string, bool;
    
     !!(data && data.length>0 || data && Object.keys(data).length>0 || data===true)
    

    更简短的答案。对象键也照顾数组和字符串。

    !!(data && Object.keys(data).length>0 || data===true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-21
      • 2020-01-05
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      相关资源
      最近更新 更多