Skip to content
☆´∀`☆
On this page

如何判断两个对象是否相等

  • === 不行 这个判断的引用地址~

  • JSON.stringfy 不行

    • 因为函数和 symbol 无法被转换~
    • 如果对象中有两个相同的属性,只是他们的位置不同,则会被误判
  • 粗暴递归

    • 判断对象属性长度是否一样
    • for 循环,判断 A 对象里是否包含 B 的属性
    • 判断 A 对象的属性值是否为对象,如果是,再进行以上循环
    • 判断 A 的属性值是否等于 B 的属性值
  • Lodash - isEqual(value,other)

    • 注意: 这个方法支持比较 arrays, array buffers, booleans, date objects, error objects, maps, numbers, Object objects, regexes, sets, strings, symbols, 以及 typed arrays. Object 对象值比较自身的属性,不包括继承的和可枚举的属性。 支持函数和 DOM 节点比较。
  • Lodash - isEqualWith(value, other, [customizer])

    • 接受一个 customizer 用来定制比较值.((objValue, othValue [, index|key, object, other, stack]))