javaScript(js)两个数值进行比较

1.任意俩个值进行比较的方法封装(===)-值和类型相等

function valueEquals (a, b)  {
//两个变量相等-基本类型的比较
  if (a === b) return true;
//数组的比较-比较相应索引对应的基本类型的值的比较
  if (!(a instanceof Array)) return false;
  if (!(b instanceof Array)) return false;
  if (a.length !== b.length) return false;
  for (let i = 0; i !== a.length; ++i) {
    if (a[i] !== b[i]) return false;
  }
  return true;
}

2.任意俩个值进行比较的方法封装(==)-值相等

//判断是否是纯粹的对象,前面有封装
function isObject(obj) {
  return Object.prototype.toString.call(obj) === '[object Object]';
}
//松散比较
function looseEqual (a, b) {
  const isObjectA = isObject(a);
  const isObjectB = isObject(b);
  if (isObjectA && isObjectB) {
    return JSON.stringify(a) === JSON.stringify(b);
  } else if (!isObjectA && !isObjectB) {
    return String(a) === String(b);
  } else {
    return false;
  }
};
//俩个数组的比较
function arrayEquals (arrayA, arrayB) {
  arrayA = arrayA || [];
  arrayB = arrayB || [];

  if (arrayA.length !== arrayB.length) {
    return false;
  }

  for (let i = 0; i < arrayA.length; i++) {
    if (!looseEqual(arrayA[i], arrayB[i])) {
      return false;
    }
  }

  return true;
};
//俩个变量的比较
function isEqual (value1, value2) {
//数组
  if (Array.isArray(value1) && Array.isArray(value2)) {
    return arrayEquals(value1, value2);
  }
//非数组
  return looseEqual(value1, value2);
};
/*严格比较*/
valueEquals(1, 1)
//true
 valueEquals(1, "1")
//false
 valueEquals([1, 2], [1, 2])
//true
/*松散比较*/
isEqual(1, "1")
//true
//松散也是相对的只是针对数组内的基本类型,引用类型除外
isEqual([{1: 1}], [{1: "1"}])
//false
isEqual([{1: "1"}], [{1: "1"}])
//true
//如果是对象比较也是严格比较
isEqual({1: "1"}, {1: "1"})
//true
isEqual({1: 1}, {1: "1"})
//false
//需要注意,不过此类比较很少用到,了解即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。