@onesy/utils
Version:
24 lines (23 loc) • 930 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const isObjectLike = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
const equalDeep = (valueA, valueB) => {
if (valueA === valueB)
return true;
if (Number.isNaN(valueA) && Number.isNaN(valueB))
return true;
if ((typeof valueA !== typeof valueB) &&
!(isObjectLike(valueA) && isObjectLike(valueB)))
return false;
if (Array.isArray(valueA) &&
Array.isArray(valueB) &&
valueA.length === valueB.length)
return valueA.every((item, index) => equalDeep(item, valueB[index]));
if (isObjectLike(valueA)) {
const valueA_ = Object.assign({}, valueA);
const valueB_ = Object.assign({}, valueB);
return Object.keys(valueA_).every(key => equalDeep(valueA_[key], valueB_[key]));
}
return false;
};
exports.default = equalDeep;
;