首页 > 解决方案 > 如何比较具有不同数据类型的两个对象

问题描述

如何比较具有不同数据类型的两个对象

var a = {
sort: 7,
start: "0"}

var b = {
sort: "7",
start: "0"}

我期待两者是平等的。但是当我使用这个比较时它给出了错误:JSON.stringify(a) === JSON.stringify(b)

标签: javascriptjsonobject

解决方案


One way you can do this is to stingify the objects, then parse them using a reviver function to cast the strings to numbers, then stringify them back and compare :

var a = {
  sort: 7,
  start: "0",
  x: "a"
}

var b = {
  sort: "7",
  start: "0",
  x: "a"
}

const strA = JSON.stringify(a);
const strB = JSON.stringify(b);

const x = JSON.parse(strA, (k, v) => {  
  return k && !isNaN(+v) ? +v : v;
})

const y = JSON.parse(strB, (k, v) => {
  return k && !isNaN(+v) ? +v : v;
})

const equal = JSON.stringify(x) === JSON.stringify(y);

console.log(equal);


推荐阅读