Skip to content

Instantly share code, notes, and snippets.

@xiaojue
Created October 31, 2011 17:18
Show Gist options
  • Save xiaojue/1328054 to your computer and use it in GitHub Desktop.
Save xiaojue/1328054 to your computer and use it in GitHub Desktop.
javascript equal method
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