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(/(^[ \t\n\r]*)|([ \t\n\r]*$)/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]'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM