比较任意类型是否相等!

简介: 比较任意类型是否相等!
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
目录
相关文章
|
1月前
|
网络安全 Python
这个错误是由于在将字符串类型的值转换为字典类型时出现了问题
【2月更文挑战第20天】这个错误是由于在将字符串类型的值转换为字典类型时出现了问题
15 1
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
28 4
|
1月前
|
编译器 C++
47不同类型数据间的转换
47不同类型数据间的转换
5 0
|
7月前
|
程序员 数据库
软件文档的类型有哪些?
软件文档的类型有哪些?
144 0
|
10月前
测试字符类型和布尔类型
测试字符类型和布尔类型
37 0
|
11月前
|
算法 搜索推荐 编译器
一组类型相同的数据【C 数组】总结
一组类型相同的数据【C 数组】总结
|
JSON JavaScript C语言
转换类型的那些事儿
转换类型的那些事儿
88 0
判断Object中数据类型(已知类型、未知类型))
判断Object中数据类型(已知类型、未知类型))
108 0
|
C++
使用C++模板判断两个类型是否一样
使用C++模板判断两个类型是否一样
101 0
类型和值
类型和值
53 0

热门文章

最新文章