Home Reference Source

ts_temp/is/shallowEqual.js

import isObject from './object';
const hasOwnProperty = Object.prototype.hasOwnProperty;
/**
 * Returns `true` if its arguments are equivalent is shallow equal terms, `false` otherwise.
 *
 * @param {*} test1
 * @param {*} test2
 * @return {Boolean}
 * @example
 *
 *      isShallowEqual(1, 1); //=> true
 *      isShallowEqual(1, '1'); //=> false
 *      isShallowEqual([1, 2, 3], [1, 2, 3]); //=> true
 *      isShallowEqual({ a: { b: 1 }}, { a: { b: 1 }}); //=> false
 */
export default (test1, test2) => {
    if (test1 === test2) {
        return true;
    }
    if (!isObject(test1) || !isObject(test2)) {
        return false;
    }
    const keys = Object.keys(test1);
    if (keys.length !== Object.keys(test2).length) {
        return false;
    }
    for (let i = 0; i < keys.length; i++) {
        const key = keys[i];
        if (!hasOwnProperty.call(test2, key) || test1[key] !== test2[key]) {
            return false;
        }
    }
    return true;
};