javascript - 如何比较具有不同数据类型的两个对象
问题描述
如何比较具有不同数据类型的两个对象
var a = {
sort: 7,
start: "0"}
var b = {
sort: "7",
start: "0"}
我期待两者是平等的。但是当我使用这个比较时它给出了错误:JSON.stringify(a) === JSON.stringify(b)
解决方案
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);
推荐阅读
- adfs - 为应用程序组或依赖方配置声明提供程序
- python - 如何在 Python 中使用 kafkaProducer 发送数据?
- php - PHP按关联数组中的位置对数组进行排序
- teamcity - TeamCity buildStatus 服务消息未成功
- android - 创建一个Handler函数,随机生成5个坐标
- javascript - 获取不包括具有特定类的元素的元素的索引?
- arrays - 将最多包含 100 个项目 ID(包含重复项)的数组与具有唯一 ID 的数组进行比较
- javascript - 带有图标的 Ruby 复选框现在在切换时显示/隐藏 div
- wordpress - 在 wp-admin 中添加和编辑后如何按 asc 或 desc 显示标签顺序
- reactjs - 测试使用 react-relative-portal 的反应组件