UNPKG

bbo

Version:

bbo is a utility library of zero dependencies for javascript.

100 lines (83 loc) 2.07 kB
'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;