[js函数] shallowEqual
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
}												
											[js函数] shallowEqual的更多相关文章
- 3.3 js函数
		
1.函数语法: 函数声明的方式:function 函数名(参数1,参数2-){//函数体;}函数调用:函数名(参数1,参数2-); 函数内不一定都指定返回值. 如果需要指定返回值,可用 return ...
 - Js函数function基础理解
		
正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...
 - js函数表达式和函数声明的区别
		
我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...
 - 通用js函数集锦<来源于网络> 【二】
		
通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json ...
 - 通用js函数集锦<来源于网络/自己> 【一】
		
通用js函数集锦<来源于网络/自己>[一] 1.返回一个全地址2.cookie3.验证用户浏览器是否是微信浏览器4.验证用户浏览器是否是微博内置浏览器5.query string6.验证用 ...
 - 100多个基础常用JS函数和语法集合大全
		
网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...
 - JS函数
		
1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏 ...
 - js函数和运算符
		
函数是由事件驱动或者它被调用时执行可重复使用的代码块. <script> function myFunction(){ Alert(“hello World!”): } </scri ...
 - JavaScript学习03 JS函数
		
JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...
 - JSF页面中使用js函数回调后台bean方法并获取返回值的方法
		
由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的, ...
 
随机推荐
- 抗TNF治疗改变JIA患者PBMC基因表达谱,可预测疗效
			
抗TNF治疗改变JIA患者PBMC基因表达谱,可预测疗效 Moorthy LN, et al. ACR 2007. Presentation No:1713. 背景:我们假设儿童期发生的特发性关节炎( ...
 - [EULAR文摘] 超声腱鞘炎对RA早期诊断的价值
			
超声腱鞘炎对RA早期诊断的价值 Sahbudin I, et al. EULAR 2015. Present ID: OP0015. 背景:为了预测早期未分化疾病发展为类风湿关节炎(RA), EULA ...
 - z order curve
			
https://www.cnblogs.com/tgzhu/p/8286616.html
 - Markdown的学习方式
			
Markdown的学习 标题 二级标题表示 \# + 标题名字 若是三级标题以及更多级标题根据\#的个数表示多少级 字体 ### 粗体: **+ 名字 +** **Hello World** 斜体: ...
 - 同一ip地址不同的主机冲突解决
			
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HA ...
 - sql语句顺序/包含执行顺序和书写顺序
			
分页查询 如果一页记录为10条,希望查看第3页记录应该怎么查呢?  第一页记录起始行为0,一共查询10行:  第二页记录起始行为10,一共查询10行:  第三页记录起始行为20,一共查询10行: ...
 - 微信小程序(开发某些方式)
			
1.开发工具:微信小程序开发工具(需要appid登录)2.调试:可使用微信开发者工具预览(用真机测试)3.真机调试:微信开发者工具真机调试(可打印以及查看网络等)4.扫一扫功能: 1.小程序里面可 ...
 - Nodejs杀死本地应用(win)
			
windows端nodejs检查应用运行并杀死. import {exec, execSync} from "child_process" import {decode} from ...
 - tcl编程
			
目录 0. 基础语法 0.1 普通变量 0.2 list, 列表 0.3 array, 数组 0.4 循环 0.4.1 for 0.4.2 foreach 1. 从命令行获取参数(好像并不是很强大) ...
 - 使用windows平板学习与办公的一些经历(酷比魔方i9篇)
			
大概是在2019年的时候,我在某平台上购买了900元的二手windows平板电脑,酷比魔方i9 首先谈谈背景.当时我手里是有个笔记本,屏幕大概15.6寸,4G+256G的,平时用的时候功率平均20几W ...