zoukankan      html  css  js  c++  java
  • js 判断是不是空、值是否存在

    判断数组是否存在某个值:

    1. Array.indexOf(val) > -1 //存在 (缺陷:一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相等运算符(===)进行判断,这会导致对NaN的误判。)
    2. Array.includes(val)

    判断对象是否存在某个字段:

    1. obj["key"] != undefined
      (缺陷: 如果这个key定义了,并且就是很2的赋值为undefined)
    2. !("key" in obj)
    3. obj.hasOwnProperty("key")
    4. typeof item.editFlag === "undefined"

    判断是否为空

    JavaScript本身没有判断一个变量是不是空值的函数,因为变量有可能是string,object,number,boolean等类型,类型不同,判断方法也不同。所以在文章中写了一个函数,用以判断JS变量是否空值,如果是undefinednull''NaNfalse0[]{} ,空白字符串,都返回true,否则返回false

    function isEmpty(v) {
        switch (typeof v) {
        case 'undefined':
            return true;
        case 'string':
            if (v.replace(/(^[ 	
    
    ]*)|([ 	
    
    ]*$)/g, '').length == 0) return true;
            break;
        case 'boolean':
            if (!v) return true;
            break;
        case 'number':
            if (0 === v || isNaN(v)) return true;
            break;
        case 'object':
            if (null === v || v.length === 0) return true;
            for (var i in v) {
                return false;
            }
            return true;
        }
        return false;
    }

    测试

    isEmpty()              //true
    isEmpty([])            //true
    isEmpty({})            //true
    isEmpty(0)             //true
    isEmpty(Number("abc")) //true
    isEmpty("")            //true
    isEmpty("   ")         //true
    isEmpty(false)         //true
    isEmpty(null)          //true
    isEmpty(undefined)     //true

    typeof

    typeof undefined === 'undefined'
    typeof null === 'object'
    
    //Boolean
    typeof true === 'boolean'
    
    //Number
    typeof 1 === 'number'
    
    //String
    typeof '111' === 'string'
    
    //Array
    typeof ['a','b'] === 'object'
    
    //Object
    typeof {a:1,b:2} === 'object'

    判断数组方法:

    1. instanceof Array
    2. objName.constructor==Array (缺陷:在不同iframe中创建Array并不共享prototype;继承Array也为true,如:b.prototype=new Array)
    3. lengthsplicelength不可枚举(缺陷:object.propertyIsEnumerable('length')
    4. Array.isArray(objName)
    5. obj.prototype.toString.call(objName)==='[object Array]'
  • 相关阅读:
    【QT】对话框打开图像并用QPixmap显示
    【QT】打开文件对话框,选择路径下文件
    狄拉克下采样
    Linux 安装JDK(jdk-8u121-linux-x64.tar.gz)
    Linux 命令安装bin文件
    Python3 tesseract加载chi_sim异常停止工作
    Python3 pip出现Fatal error in launcher: Unable to create process using '"'
    Python3 判断文件和文件夹是否存在、创建文件夹
    Python3 itchat实现微信定时发送群消息
    Python3 实现(wxpy)用微信自动定时给朋友定时推广
  • 原文地址:https://www.cnblogs.com/conglvse/p/10455295.html
Copyright © 2011-2022 走看看