You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何判断两个属性数量相同的对象是否相等?

正确比较两个对象是否等值的方法

你的代码返回false有两个核心问题:

  • 回调函数没有返回结果:你写的三元表达式没有用return,所以every收到的是undefined,会被视为false
  • 逻辑错误:你只在比较两个对象的键名是否按索引位置相等,完全没判断键对应的值是否相等

修正后的实现

既然你确认两个对象的属性数量始终相同,我们可以直接遍历其中一个对象的键,逐一比较对应的值:

const priceOne = {
  "price": 14.31,
  "taxes": 2.00,
  "total": 16.31
}

const priceTwo = {
  "price": 14.31,
  "taxes": 2.00,
  "total": 16.31
}

const comparePrice = Object.keys(priceOne).every(key => {
  // 比较当前键在两个对象中的值
  return priceOne[key] === priceTwo[key];
})

console.log(comparePrice); // 输出 true

额外注意点

  • 如果对象里包含浮点数,要注意JS的浮点数精度问题(比如0.1 + 0.2 !== 0.3),这种情况可以用差值判断:
    return Math.abs(priceOne[key] - priceTwo[key]) < 0.0001;
    
  • 如果对象里还有嵌套对象,上面的方法就不适用了,需要递归比较每个嵌套层级的键和值。

内容的提问来源于stack exchange,提问作者eneooo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:45:37