UNPKG

@amaui/utils

Version:
20 lines (16 loc) 726 B
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) && valueA.length === valueB.length) return valueA.every((item, index) => equalDeep(item, valueB[index])); if (isObjectLike(valueA)) { const valueA_ = { ...valueA }; const valueB_ = { ...valueB }; return Object.keys(valueA_).every(key => equalDeep(valueA_[key], valueB_[key])); } return false; }; export default equalDeep;