@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
46 lines (45 loc) • 1.8 kB
JavaScript
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
import { isEqualWith, omitBy, isPlainObject, isUndefined } from 'lodash';
/**
* 深比较,忽略对象上值为 Undefined 的属性
* 如 isEqualIgnoreUndefined({ a: 1, b: undefined }, { a: 1 }) 结果为 true
* @param objA
* @param objB
*/
export default function isEqualIgnoreUndefined(objA, objB) {
return isEqualWith(objA, objB, function (a, b) {
if (isPlainObject(a) && isPlainObject(b)) {
var objWithoutUndefined_1 = omitBy(a, isUndefined);
var othWithoutUndefined_1 = omitBy(b, isUndefined);
var objKeys = Object.keys(objWithoutUndefined_1);
var othKeys = Object.keys(othWithoutUndefined_1);
var totalKey = __spread(objKeys, othKeys).filter(function (value, index, arr) { return arr.indexOf(value) !== index; });
if (totalKey.length !== objKeys.length ||
totalKey.length !== othKeys.length) {
return false;
}
return totalKey.every(function (key) {
return isEqualIgnoreUndefined(objWithoutUndefined_1[key], othWithoutUndefined_1[key]);
});
}
});
}