bbo
Version:
bbo is a utility library of zero dependencies for javascript.
100 lines (83 loc) • 2.07 kB
JavaScript
'use strict';
var is_object = require('./is_object.js');
require('./get_tag.js');
var is_array = require('./is_array.js');
var is_date = require('./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 (is_array(objs[i])) {
if (!compareArrays(objs[i], objs[i + 1])) {
return false;
}
} else if (is_object(objs[i])) {
if (!compareObjects(objs[i], objs[i + 1])) {
return false;
}
} else if (is_date(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 (is_array(obj[i])) {
if (!compareArrays(obj[i], obj1[i])) {
return false;
}
} else if (is_object(obj[i])) {
if (!compareObjects(obj[i], obj1[i])) {
return false;
}
} else if (is_date(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 (!is_array(obj1)) return false;
if (obj.length !== obj1.length) return false;
var equal = compare(obj, obj1);
return equal;
}
function compareObjects(obj, obj1) {
if (!is_object(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 (!is_date(obj1) || obj.getTime() !== obj1.getTime()) {
return false;
}
return true;
}
module.exports = isShallowEqual;