首页 > 其他分享 >[js函数] shallowEqual

[js函数] shallowEqual

时间:2023-02-16 19:34:32浏览次数:38  
标签:const 函数 js key shallowEqual return false any

const isBasicType = (t: any) => {
return t === "number" || t === "string" || t === "boolean" || t === 'undefined';
}


/**
* 数组和对象都能比较
* @param a
* @param b
* @returns {boolean}
*/
function compareByObject(a:any,b:any){
const keysA = Object.keys(a);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) {
return false;
}

const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(b);
for (let idx = 0; idx < keysA.length; idx++) {
const key = keysA[idx];
if (!bHasOwnProperty(key) || a[key] !== b[key]) {
return false;
}
}
return true;
}



const shallowEqual = (a:any, b:any) => {

const aType = typeof a;
const bType = typeof b;

if (aType !== bType) {
return false;
}

if (isBasicType(aType) && isBasicType(bType)) {
return a === b;
}


if (typeof a !== "object" || !a || typeof b !== "object" || !b) {
return false;
}

if (a === b) {
return true;
}

return compareByObject(a,b);
};


export {
shallowEqual
}

标签:const,函数,js,key,shallowEqual,return,false,any
From: https://www.cnblogs.com/lhp2012/p/17128022.html

相关文章

  • [js函数] storageManager
    import_getfrom'lodash.get';import_setfrom'lodash.set';import_debouncefrom'lodash.debounce';import{shallowEqual}from"./shallow-equal";constIS......
  • 普通生成函数学习笔记
    现在我们考虑有一个序列\((a_1,a_2,a_3,\cdots,a_n,\cdots)\)。我们将这个序列作为形式幂级数\(A(x)=\sum_{n\ge0}{a_{n}x^n}\)的常数项序列。\(A(x)\)就是序列\(\{a......
  • python处理json
    importjson#str----->jsonstr='{"name":"御姐","age":18}'j=json.loads(str)print(j)print(type(j))#str----->json------>strstr='{"name":"御姐",......
  • Python sorted函数及用法
    orted()作为 Python 内置函数之一,其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序。sorted()函数的基本语法格式如下:list=sorted(iterable,key=None,......
  • 解析MYSQL建表语句,生成表结构的JSON
    根据建表语句解析表结构,并将表结构解析为JSON。根据MYSQL的建表语句,建表语句:CREATETABLE`TEST`(`ID`varchar(56)NOTNULL,`CREAETE_TIME`datetimeN......
  • 如何查看库函数实现的某些函数(strlen,strcmp,strcpy等)
    我们拿strlen()作为举例(编译环境为:VS2022)strlen()引用的头文件为string.h,如下进行操作ps:打开strlen.c文件便可以看到库函数对于strlen()的实现,若要搜索其他在库......
  • MATLAB 一些常用的处理数据函数
    记录一些简单的功能方便及时调出来看,并附上一些参考链接,这样就不用总是重复查了......多学一个就多补充一个。统计数组中指定元素数量参考链接:https://www.ilovematl......
  • nestjs微信小程序登录授权
    前言nestjs官方文档是英文,太难搞了,摸索了两天,把经验记下来。以后备用目录结构|--src//项目根目录|--modules//模块比如用户模块,商品模块|--app//入口模......
  • QT中调用不同cpp文件的变量或者函数
    有时候会遇到一个问题,在QT中,需要使用另一个文件的函数或者对象,但是没办法直接使用。一般是在其他类中想使用主类中的函数或者变量方法1:在需要使用的文件中声明这个类, ......
  • 原生 js 渐变图例
    https://codepen.io/hihust-knighterrant/pen/YzOPLgB渐变色图例<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"c......