乐趣区

关于javascript:如何让两个对象或数组相等

如何让两个对象或数组相等

大家晓得对象的比拟不是值的比拟,只管两个对象的属性和值都一样,它们也不会相等。数组也如此,只管两个数组的索引和元素都一样,它们也不会相等,数组能够了解为一种特定对象,JavaScript 给予它一些本人独有的应用形式和特点。之所以不相等是因为对象寄存在推内存中,JavaScript 不容许间接裸露推内存数据,咱们能够通过对象的援用地址来操作对象。
对象的比拟均是援用的比拟,当且仅当它们援用同一个基对象时它们才相等。

      const objOne = {name: `mike`, age: 23}
      const objTwo = objOne
      objOne === objTwo  // true

如果咱们非要比拟两个对象或数组相等,则必须比拟它们的属性或元素,上面这段代码简略定义了比拟两个对象或数组相等的函数,简单嵌套另说:

        const compareObject = (paramsOne, paramsTwo) => {if (paramsOne instanceof Object && paramsTwo instanceof Object) {const keysOne = Object.keys(paramsOne)
            const keysTwo = Object.keys(paramsTwo)
            const valuesOne = Object.values(paramsOne)
            const valuesTwo = Object.values(paramsTwo)
            if (keysOne.length !== keysTwo.length || valuesOne.length !== valuesTwo.length) return false
            for (const index in keysOne) {if (keysOne[index] !== keysTwo[index] || valuesOne[index] !== valuesTwo[index]) return false
            } 
            return true
          } else {throw TypeError `Parameter is not an object type`}
        }
退出移动版