比较任意类型是否相等!

简介: 比较任意类型是否相等!
function valueOf(obj) {
  return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);
}
function valueEqual(a, b) {
  // Test for strict equality first.
  if (a === b) return true;
  // Otherwise, if either of them == null they are not equal.
  if (a == null || b == null) return false;
  if (Array.isArray(a)) {
    return (
      Array.isArray(b) &&
      a.length === b.length &&
      a.every(function(item, index) {
        return valueEqual(item, b[index]);
      })
    );
  }
  if (typeof a === 'object' || typeof b === 'object') {
    var aValue = valueOf(a);
    var bValue = valueOf(b);
    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);
    return Object.keys(Object.assign({}, a, b)).every(function(key) {
      return valueEqual(a[key], b[key]);
    });
  }
  return false;
}
export default valueEqual;


代码中直接接入上面的代码或者安装包,使用以下命令


npm install --save value-equal


使用


// using ES6 modules
import valueEqual from 'value-equal';
// using CommonJS modules
var valueEqual = require('value-equal');
valueEqual(1, 1); // true
valueEqual('asdf', 'asdf'); // true
valueEqual('asdf', new String('asdf')); // true
valueEqual(true, true); // true
valueEqual(true, false); // false
valueEqual({ a: 'a' }, { a: 'a' }); // true
valueEqual({ a: 'a' }, { a: 'b' }); // false
valueEqual([1, 2, 3], [1, 2, 3]); // true
valueEqual([1, 2, 3], [2, 3, 4]); // false
目录
相关文章
|
6月前
|
网络安全 Python
这个错误是由于在将字符串类型的值转换为字典类型时出现了问题
【2月更文挑战第20天】这个错误是由于在将字符串类型的值转换为字典类型时出现了问题
32 1
|
1月前
字典,列表和字符串之间的转化示例
【10月更文挑战第13天】 字典,列表和字符串之间的转化示例
40 0
|
3月前
|
Java 测试技术 API
如何检查字符串是否仅包含数字
【8月更文挑战第22天】
199 0
|
6月前
判断字符类型
该内容描述了一个字符判断和转换的逻辑:输入字符,根据条件进行操作。如果字符是大写字母,转为小写;如果是小写字母,转为大写;若是数字,输出其ASCII值;否则输出"错误"。判断条件包括:大写字母ASCII值在'A'和'Z'之间,小写字母在'a'和'z'之间,数字在'0'和'9'之间。转换利用ASCII值差32的特性,通过if-else if语句实现。内容中还包括两幅示例图片,显示了程序执行的结果。
44 1
|
6月前
|
编译器 C++
47不同类型数据间的转换
47不同类型数据间的转换
35 0
|
Java 编译器
重载的方法能否根据返回类型进行区分?
重载的方法不能根据返回类型进行区分。方法的重载是基于方法名称和参数列表来进行区分的,与返回类型无关。这是因为在Java中,编译器在确定要调用哪个重载方法时,仅根据传递给方法的参数来进行决策。
366 0
测试字符类型和布尔类型
测试字符类型和布尔类型
65 0
|
算法 搜索推荐 编译器
一组类型相同的数据【C 数组】总结
一组类型相同的数据【C 数组】总结
|
JSON JavaScript C语言
转换类型的那些事儿
转换类型的那些事儿
118 0
判断Object中数据类型(已知类型、未知类型))
判断Object中数据类型(已知类型、未知类型))
141 0