为了账号安全,请及时绑定邮箱和手机立即绑定

比较JavaScript中的对象数组

比较JavaScript中的对象数组

慕姐8265434 2019-10-11 10:45:22
我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且数组永远不会大于8个项目,因此可能需要遍历每个对象然后查看对象的值的蛮力方法。 8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗?
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算符。


要回答最初的问题,可以用一种方法来做到这一点,请注意,这有点麻烦,只需将两个数组序列化为JSON,然后比较两个JSON字符串即可。这只会告诉您数组是否不同,显然您可以对数组中的每个对象执行此操作,以查看哪些对象不同。


另一个选择是使用一个库,该库具有一些比较对象的好工具-我使用并推荐MochiKit。


编辑: kamens给出的答案也值得考虑,因为一个用于比较两个给定对象的函数将比任何库都要小得多,以执行我建议的操作(尽管我的建议当然可以很好地工作)。


这是一个幼稚的实现,可能只对您有用-请注意此实现存在潜在的问题:


function objectsAreSame(x, y) {

   var objectsAreSame = true;

   for(var propertyName in x) {

      if(x[propertyName] !== y[propertyName]) {

         objectsAreSame = false;

         break;

      }

   }

   return objectsAreSame;

}

假定两个对象都具有相同的确切属性列表。


哦,很明显,无论好坏,我都属于唯一的一个返回点阵营。:)


查看完整回答
反对 回复 2019-10-11
?
12345678_0001

TA贡献1802条经验 获得超5个赞

老实说,最多有8个对象,每个对象最多有8个属性,最好的选择是只遍历每个对象并直接进行比较。它会很快并且会很容易。

如果您将经常使用这些类型的比较,那么我就Jason关于JSON序列化的观点表示同意...但是否则,无需使用新的库或JSON序列化代码来减慢您的应用程序的速度。


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 437 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信