在JavaScript中,[1,2] == [1,2]
和 ({a:1}) == ({a:1})
为假,是因为JavaScript中的数组和对象比较是基于引用进行的,而不是基于值进行的。
当我们创建一个新的数组或对象时,它们会被分配到内存中的不同位置。因此,当我们比较两个数组或对象时,我们实际上是在比较它们在内存中的引用,而不是它们的值。因为这两个数组或对象位于内存中的不同位置,所以它们被认为是不相等的。
如果您想要比较两个数组或对象的值是否相等,可以使用以下方法:
对于数组:
function arraysEqual(a, b) {
if (a.length !== b.length) return false;
for (let i = 0; i < a.length; i++) {
if (a[i] !== b[i]) return false;
}
return true;
}
对于对象:
function objectsEqual(a, b) {
const aKeys = Object.keys(a);
const bKeys = Object.keys(b);
if (aKeys.length !== bKeys.length) return false;
for (const key of aKeys) {
if (!b.hasOwnProperty(key) || a[key] !== b[key]) return false;
}
return true;
}
这些方法可以确保我们比较的是数组或对象的值,而不是它们在内存中的引用。
领取专属 10元无门槛券
手把手带您无忧上云