Created
October 31, 2011 17:18
-
-
Save xiaojue/1328054 to your computer and use it in GitHub Desktop.
javascript equal method
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var lang = function() { | |
var types = ["Array", "Object", "String", "Number"], | |
ret = {}; | |
for (var i = 0; i < types.length; i++) { (function(i) { | |
var type = types[i]; | |
ret['is' + type] = function(arg) { | |
return lang._typeof(arg) === "[object " + type + "]"; | |
} | |
})(i) | |
} | |
return ret; | |
} (); | |
lang._typeof = function(o) { | |
return Object.prototype.toString.call(o); | |
} | |
//判断数组里是否含有一个值。 | |
function inArray(array, val) { | |
for (var i = 0; i < array.length; i++) { | |
if (isEqual(array[i], val)) return true; | |
} | |
return false; | |
} | |
//判断一个数组为空 | |
function isEmptyArray(array) { | |
return (lang.isArray(array) && array.length == 0); | |
} | |
//判断一个object为空 | |
function isEmptyObject(object) { | |
if (!lang.isObject(object)) return false; | |
for (var i in object) return false; | |
return true; | |
} | |
//判断俩货是否完全相等,严格匹配类型 | |
function isEqual(s, o) { | |
if (lang._typeof(s) !== lang._typeof(o)) return false; | |
if (!lang.isArray(s) && ! lang.isObject(s) && ! lang.isArray(o) && ! lang.isObject(o)) return s === o; | |
for (var i in s) { | |
if (o[i] && ! lang.isArray(o[i]) && ! lang.isObject(o[i]) && lang._typeof(o[i]) === lang._typeof(s[i]) && o[i] === s[i] || ((isEmptyObject(s[i]) && isEmptyObject(o[i])) || (isEmptyArray(s[i]) && isEmptyArray(o[i])))) { | |
continue; | |
} else { | |
return isEqual(s[i], o[i]); | |
} | |
}; | |
return true; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment