sveaflet
Version:
Sveaflet = Svelte + Leaflet
53 lines (52 loc) • 1.57 kB
JavaScript
function getType(value) {
return Object.prototype.toString.call(value);
}
export function isNil(value) {
return value === undefined || value === null || value === '';
}
export function isObject(value) {
return getType(value) === '[object Object]';
}
export function isArrayEqual(prevArr, curArr) {
if (prevArr.length !== curArr.length) {
return false;
}
return curArr.every((element) => prevArr.includes(element));
}
export function isObjectEqual(prevObj, curObj) {
if (prevObj === curObj) {
return true;
}
// 检查两个对象是否为对象,并且不为 null
if (typeof prevObj !== 'object' ||
prevObj === null ||
typeof curObj !== 'object' ||
curObj === null) {
return false;
}
// 获取对象的键列表
const prevKeys = Object.keys(prevObj);
const curKeys = Object.keys(curObj);
// 检查键的数量是否相同
if (prevKeys.length !== curKeys.length) {
return false;
}
// 遍历键列表,比较键和键值是否相等
for (const key of prevKeys) {
if (!curKeys.includes(key) || !isObjectEqual(prevObj[key], curObj[key])) {
return false;
}
}
return true;
}
export function isPrimitiveEqual(prevVal, curVal) {
if (getType(prevVal) !== getType(curVal)) {
return false;
}
else {
return prevVal === curVal;
}
}
export function isFunction(func) {
return (typeof func === 'function' && typeof func.constructor === 'function' && func instanceof Function);
}