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]'
  • 相关阅读:
    luogu CF804D Expected diameter of a tree |Tarjan+樹的直徑+前綴和+二分查找
    luogu CF25C Roads in Berland |最短路floyd
    自觉日志·1·再现曾经的自觉
    祝福您新年快乐!
    自觉体验十一 体验祝福,与弘誓大愿!
    自觉体验 十 体验失忆
    自觉体验 六 手语与结印
    自觉体验 一  闲来无事,闭目养神
    我将离开屏幕前的“      ”
    第五章  自觉与【转载】《大念处经》
  • 原文地址:https://www.cnblogs.com/conglvse/p/10455295.html
Copyright © 2011-2022 走看看