UNPKG

@opentiny/vue-renderless

Version:

An enterprise-class UI component library, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.

59 lines (58 loc) 1.83 kB
import "../../../chunk-G2ADBYYC.js"; import { isDate, isRegExp } from "@opentiny/utils"; import isNumber from "./isNumber"; import isString from "./isString"; import isBoolean from "./isBoolean"; import isUndefined from "./isUndefined"; import keys from "./keys"; import every from "../array/every"; let equalVal; const helperEqualCompare = ({ val1, val2, compare, func, key, obj1, obj2 }) => { if (val1 === val2) { return true; } if (val1 && val2 && !isNumber(val1) && !isNumber(val2) && !isString(val1) && !isString(val2)) { if (isRegExp(val1)) { return compare(String(val1), String(val2), key, obj1, obj2); } if (isDate(val1) || isBoolean(val1)) { return compare(Number(val1), Number(val2), key, obj1, obj2); } return equalVal(val1, val2, func, key, compare); } return compare(val1, val2, key, obj1, obj2); }; equalVal = (val1, val2, func, key, compare) => { let result, val1Keys, val2Keys; let isObj1Arr = Array.isArray(val1); let isObj2Arr = Array.isArray(val2); if (isObj1Arr || isObj2Arr ? isObj1Arr && isObj2Arr : val1.constructor === val2.constructor) { val1Keys = keys(val1); val2Keys = keys(val2); if (func) { result = func(val1, val2, key); } if (val1Keys.length === val2Keys.length) { if (isUndefined(result)) { return every( val1Keys, (key2, index) => key2 === val2Keys[index] && helperEqualCompare({ val1: val1[key2], val2: val2[val2Keys[index]], compare, func, key: isObj1Arr || isObj2Arr ? index : key2, obj1: val1, obj2: val2 }) ); } return !!result; } return false; } }; var helperEqualCompare_default = helperEqualCompare; export { helperEqualCompare_default as default };