为什么比较对象和对象数组是不同的



为什么当我比较

var a = {id: 1, status: true};
var b = {id: 1, status: true};
console.log(a == b);

它返回false

当我比较

var array1 = [{id: 1, status: true}, {id:1, status: true}];
var array2 = [{id: 1, status: true}, {id:1, status: true}];
console.log(array1[0] == array2[0]);

它返回false

但是当我比较

var a = {id: 1, status: true};
var b = {id: 1, status: true};
var array1 = [a, b];
var array2 = [a, b];
console.log(array1[0] == array2[0]);

它返回true

==检查操作数参考。array1array2具有不同的参考。但是array1[0]array2[0]具有相同的参考(a(,因此array1[0] == array2[0]返回true

您正在比较两个相同但不同的对象。这将并且应该返回false。如果您希望它返回true,它应该看起来像:

var a = {id: 1, status: true};
var b = a;
console.log(a == b);

它们是否在数组中并不重要。阵列也是如此。如果比较两个数组,即使它们是相同的,除非变量指向同一数组。

相关内容

  • 没有找到相关文章

最新更新