Как я могу сравнить два объекта с разными типами данных - PullRequest
0 голосов
/ 27 сентября 2019

Как я могу сравнить два объекта с разными типами данных

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

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

Я ожидаю, что оба они равны.Но это дает ложь, когда я использую это сравнение: JSON.stringify(a) === JSON.stringify(b)

1 Ответ

0 голосов
/ 27 сентября 2019

Один из способов сделать это - сжать объекты, затем проанализировать их с помощью функции reviver , чтобы привести строки к числам, затем преобразовать их в строку и сравнить:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...