UNPKG

bbo

Version:

bbo is a utility library of zero dependencies for javascript.

98 lines (82 loc) 2.03 kB
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;