如何让两个对象或数组相等
大家晓得对象的比拟不是值的比拟,只管两个对象的属性和值都一样,它们也不会相等。数组也如此,只管两个数组的索引和元素都一样,它们也不会相等,数组能够了解为一种特定对象,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`}
}