zoukankan      html  css  js  c++  java
  • 「思考题」如何比较两个对象是否相等?(不考虑堆栈)

    如何比较两个对象是否相等?

    在JS中如果是值类型,可以使用 === 号来判断是否相等。而引用类型比较的是他们引用,因此不能直接用 === 来判断,下面介绍几种判断方法。

     const obj = {name: 'xiaoming', age: [18, 24]}
     const obj2 = {name: 'xiaoming', age: [18, 24]}
     console.log('打印', obj === obj2) // false 这里 === 比较的是他们的引用
    

    方法一:JSON.stringify()

    将对象用Json.stringify()方法转换成字符串类型,然后用 === 来比较。(这种比较方法不严谨,如果两个对象键值对的顺序不相同则无法直接用这种方式判断)

    const obj1 = {name: 'xiaoming', age: [18, 24]}
    const obj2 = {name: 'xiaoming', age: [18, 24]}
    const obj3 = {age: [18, 24], name: 'xiaoming'}
    const res1 = JSON.stringify(obj1)
    const res2 = JSON.stringify(obj2)
    const res3 = JSON.stringify(obj3)
     console.log('打印', res1 === res2) // true
     console.log('打印', res1 === res3) // false  调换健值对顺序后的比较结果
    

    方法二:需要递归解决循环引用比较麻烦、后续抽时间更新

  • 相关阅读:
    BZOJ1233 干草堆
    POJ1321棋盘问题【搜索】
    1008
    10.2训练赛
    2014 ACM/ICPC Asia Regional Shanghai Online【未完成】
    hdu5045||2014 ACM/ICPC Asia Regional Shanghai Online【数位dp】
    0926
    poj1007【求逆序数】
    hlg1287数字去重和排序II【hash】
    hlgChocolate Auction【并查集】
  • 原文地址:https://www.cnblogs.com/liea/p/12515020.html
Copyright © 2011-2022 走看看