Javascript Object.values不创建";“适当的”;排列

Javascript Object.values不创建";“适当的”;排列,javascript,Javascript,我正在使用Object.values()创建一个数组。将其与硬编码等效项进行比较时,返回false var newArr = Object.values({1: 50, 2: 50, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0}); console.log(newArr); // [50, 50, 0, 0, 0, 0, 0]; var compareArr = [50, 50, 0, 0, 0, 0, 0]; console.log(compareArr); // [50, 50

我正在使用
Object.values()
创建一个数组。将其与硬编码等效项进行比较时,返回false

var newArr = Object.values({1: 50, 2: 50, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0});
console.log(newArr); // [50, 50, 0, 0, 0, 0, 0];
var compareArr = [50, 50, 0, 0, 0, 0, 0];
console.log(compareArr); // [50, 50, 0, 0, 0, 0, 0];
console.log(newArr === compareArr); // false

我在这里遗漏了什么或者它不应该返回true吗?

JavaScript比较了非原语类型的引用(对于on
=
==
)。数组不是基元类型。这意味着如果它们不是同一个实例,则比较将返回false

JavaScript比较非原语类型的引用(对于on
=
==
)。数组不是基元类型。这意味着如果它们不是同一个实例,则比较将返回false

您可以使用
JSON.stringify()
进行比较

var newArr=Object.values({
1: 50,
2: 50,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0
});
var compareArr=[50,50,0,0,0,0,0];

console.log(JSON.stringify(compareArr)=JSON.stringify(newArr));//true
您可以使用
JSON.stringify()
进行比较

var newArr=Object.values({
1: 50,
2: 50,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0
});
var compareArr=[50,50,0,0,0,0,0];

console.log(JSON.stringify(compareArr)=JSON.stringify(newArr));//true
比较两个具有不同对象引用的数组。比较两个具有不同对象引用的数组。谢谢!但是使用==应该返回true吗?@louis9898这一点很好。没有,我改了答案。作为一个整体,比较也是如此。==和===之间的区别在于后者不会执行隐式类型强制谢谢!但是使用==应该返回true吗?@louis9898这一点很好。没有,我改了答案。作为一个整体,比较也是如此。==和===之间的区别在于后者不会执行隐式类型强制