1. 程式人生 > >js判斷兩個值是否相等

js判斷兩個值是否相等

方法:

  function looseEqual(a, b) {     if (a === b) { return true }     var isObject = function (obj) {         return obj !== null && typeof obj === 'object'     };     var isObjectA = isObject(a),         isObjectB = isObject(b);     if (isObjectA &&
isObjectB) {
        try {             var isArrayA = Array.isArray(a),                 isArrayB = Array.isArray(b);             if (isArrayA && isArrayB) {                 return a.length === b.length && a.every(function (e, i) {                     return
looseEqual(e, b[i])
                })             } else if (!isArrayA && !isArrayB) {                 var keysA = Object.keys(a),                     keysB = Object.keys(b);                 return keysA.length === keysB.length &&
keysA.every(function (key) {
                    return looseEqual(a[key], b[key])                 })             } else {                 return false             }         } catch (e) {             return false         }     } else if (!isObjectA && !isObjectB) {         if (typeof a === 'number' || typeof b === 'number') {             return a === b         } else {             return String(a) === String(b)         }     } else {         return false;     } }    

測試:

  1.  looseEqual(1,'1')

    結果:false

  2. looseEqual({a:1},{a:1})

    結果:true