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

时间:2018-02-07 13:06:29

标签: javascript arrays boolean compare

为什么我比较

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

您正在比较两个相同但不同的对象。哪个会,也应该返回false。如果您希望它返回true,它应该如下所示:

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

它们是否在数组中并不重要。这同样适用于数组。如果你比较两个数组,即使它们是相同的,它也将返回false,除非变量指向同一个数组。