@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
49 lines (48 loc) • 1.93 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;
};
Object.defineProperty(exports, "__esModule", { value: true });
var lodash_1 = require("lodash");
/**
* 深比较,忽略对象上值为 Undefined 的属性
* 如 isEqualIgnoreUndefined({ a: 1, b: undefined }, { a: 1 }) 结果为 true
* @param objA
* @param objB
*/
function isEqualIgnoreUndefined(objA, objB) {
return lodash_1.isEqualWith(objA, objB, function (a, b) {
if (lodash_1.isPlainObject(a) && lodash_1.isPlainObject(b)) {
var objWithoutUndefined_1 = lodash_1.omitBy(a, lodash_1.isUndefined);
var othWithoutUndefined_1 = lodash_1.omitBy(b, lodash_1.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]);
});
}
});
}
exports.default = isEqualIgnoreUndefined;