packages/nerv-utils/src/shallow-equal.ts
/* istanbul ignore next */
// tslint:disable-next-line
Object.is = Object.is || function (x, y) {
if (x === y) {
return x !== 0 || 1 / x === 1 / y
}
return x !== x && y !== y
}
export default function shallowEqual (obj1, obj2) {
if (obj1 === null || obj2 === null) {
return false
}
if (Object.is(obj1, obj2)) {
return true
}
const obj1Keys = obj1 ? Object.keys(obj1) : []
const obj2Keys = obj2 ? Object.keys(obj2) : []
if (obj1Keys.length !== obj2Keys.length) {
return false
}
for (let i = 0; i < obj1Keys.length; i++) {
const obj1KeyItem = obj1Keys[i]
if (!obj2.hasOwnProperty(obj1KeyItem) || !Object.is(obj1[obj1KeyItem], obj2[obj1KeyItem])) {
return false
}
}
return true
}