提交 c5469f4a authored 作者: vipcxj's avatar vipcxj

增加一个shallowEqual工具函数

上级 e0e8471f
...@@ -155,3 +155,36 @@ export function filterValidParams(params) { ...@@ -155,3 +155,36 @@ export function filterValidParams(params) {
export function isPromise(obj) { export function isPromise(obj) {
return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
} }
export function shallowEqual(o1, o2, excludes = []) {
if (o1 === o2) {
return true;
}
if (typeof o1 !== 'object' || typeof o2 !== 'object' || o1 === null || o2 === null) {
return false;
}
if (Array.isArray(o1) && Array.isArray(o2)) {
const len = o1.length;
if (len !== o2.length) {
return false;
}
for (let i = 0; i < len; ++i) {
if (o1[i] !== o2[i]) {
return false;
}
}
return true;
}
const keys1 = Object.keys(o1);
const keys2 = Object.keys(o2);
if (keys1.length !== keys2.length) {
return false;
}
for (let i = 0; i < keys1.length; ++i) {
const key = keys1[i];
if (!excludes.includes(key) && (!keys2.includes(key) || o1[key] !== o2[key])) {
return false;
}
}
return true;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论