bbo
Version:
bbo is a utility library of zero dependencies for javascript.
98 lines (82 loc) • 2.03 kB
JavaScript
import isObject from './is_object.js';
import './get_tag.js';
import isArray from './is_array.js';
import isDate from './is_date.js';
/* eslint-disable guard-for-in */
function isShallowEqual() {
for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {
objs[_key] = arguments[_key];
}
if (objs.length < 2) return false;
for (var i in objs) {
i = Number(i);
if (objs[i + 1] !== undefined) {
if (isArray(objs[i])) {
if (!compareArrays(objs[i], objs[i + 1])) {
return false;
}
} else if (isObject(objs[i])) {
if (!compareObjects(objs[i], objs[i + 1])) {
return false;
}
} else if (isDate(objs[i])) {
if (!compareDates(objs[i], objs[i + 1])) {
return false;
}
} else {
if (objs[i] !== objs[i + 1]) {
return false;
}
}
}
}
return true;
}
function compare(obj, obj1) {
for (var i in obj) {
if (obj1[i] === undefined) {
return false;
}
if (isArray(obj[i])) {
if (!compareArrays(obj[i], obj1[i])) {
return false;
}
} else if (isObject(obj[i])) {
if (!compareObjects(obj[i], obj1[i])) {
return false;
}
} else if (isDate(obj[i])) {
if (!compareDates(obj[i], obj1[i])) {
return false;
}
} else {
if (obj[i] !== obj1[i]) {
return false;
}
}
}
return true;
}
function compareArrays(obj, obj1) {
if (!isArray(obj1)) return false;
if (obj.length !== obj1.length) return false;
var equal = compare(obj, obj1);
return equal;
}
function compareObjects(obj, obj1) {
if (!isObject(obj1)) return false;
for (var key in obj1) {
if (obj[key] === undefined) {
return false;
}
}
var equal = compare(obj, obj1);
return equal;
}
function compareDates(obj, obj1) {
if (!isDate(obj1) || obj.getTime() !== obj1.getTime()) {
return false;
}
return true;
}
export default isShallowEqual;