Javascript 比较两个对象并不能得到正确的结果
我试着比较两个物体。年龄不同,但仍然说他们是一样的。。 这是我的密码Javascript 比较两个对象并不能得到正确的结果,javascript,Javascript,我试着比较两个物体。年龄不同,但仍然说他们是一样的。。 这是我的密码 var personA = { name: "Josh Kloss", age: 33 } var personmB = { name: 'Josh Kloss', age: 43 } function compareTwoPeople(a, b) { var person1 = Object.keys(a); var person2 = Ob
var personA =
{
name: "Josh Kloss",
age: 33
}
var personmB =
{
name: 'Josh Kloss',
age: 43
}
function compareTwoPeople(a, b) {
var person1 = Object.keys(a);
var person2 = Object.keys(b);
if (person1.length !== person2.length) {
console.log("They are not same");
}
else {
for (var i = 0; i < person1.length; i++) {
if (person1[i] === person2[i]) {
console.log("They are same");
}
}
}
}
compareTwoPeople(personA, personmB);
var人物角色=
{
姓名:“Josh Kloss”,
年龄:33
}
var personmB=
{
姓名:“Josh Kloss”,
年龄:43
}
函数比较运算符(a,b){
var person1=Object.keys(a);
var person2=Object.keys(b);
if(person1.length!==person2.length){
console.log(“它们不一样”);
}
否则{
对于(变量i=0;i
如何比较这两个对象。。。
谢谢。您正在查找的是
person1[i]
,它将是['name','age'][0]
,即'name'
,关键字名称。这两个对象都是一样的。您的问题的快速解决方案是:
if (a[person1[i]] !== b[person2[i]]) {
console.log("They are not the same");
return;
}
但是,这不是一个很好的相等性测试,因为您的对象可能都有两个键,但键不同。Close,只需稍微整理一下比较,就可以使用键和迭代器获得对象值
var personA =
{
name: "Josh Kloss",
age: 33
};
var personB =
{
name: 'Josh Kloss',
age: 43
};
function compare(a, b) {
var aKeys = Object.keys(a),
bKeys = Object.keys(b);
if(aKeys.length != bKeys.length) return false;
for(var i = 0; i < aKeys.length; i++) {
if(a[aKeys[i]] != b[bKeys[i]]) return false;
}
return true;
}
compare(personA, personB);
var人物角色=
{
姓名:“Josh Kloss”,
年龄:33
};
var personB=
{
姓名:“Josh Kloss”,
年龄:43
};
功能比较(a、b){
var aKeys=对象键(a),
b键=对象键(b);
如果(aKeys.length!=bKeys.length)返回false;
对于(变量i=0;i
您可以通过查看每个属性进行比较
var personA =
{
name: "Josh Kloss",
age: 33
};
var personB =
{
name: 'Josh Kloss',
age: 43
};
function getObjectSize(obj){
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
}
function isObjectsEqual(a, b){
//check objects has equal length
if(getObjectSize(a) !== getObjectSize(b)){
return false;
}
//check properties are equal
for (var key in a) {
if (b.hasOwnProperty(key)){
if(a[key] != b[key]){
return false;
}
}
else{
return false;
}
}
return true;
}
isObjectsEqual(personA, personB); //test function
您可以考虑使用属性值比较部分。它的效率很高,因为它在第一次不匹配时返回false,而不是在不需要时检查所有属性:
var personA={name:“Josh Kloss”,年龄:33};
var personB={name:'Josh Kloss',年龄:43};
//如果对象a和对象b具有相同的属性,则返回true
//具有相同的值。否则,错误。
函数比较运算符(a,b){
var person1=Object.keys(a);
var person2=Object.keys(b);
//使用第一个测试初始化结果
var result=person1.length==person2.length;
//如果通过了第一次测试,请进行第二次测试
如果(结果){
//使用each测试每个值,在第一次不匹配时返回false
结果=人员1.每个(功能)(道具){
返回a[prop]==b[prop];
});
}
返回结果;
}
写('他们是一样的吗?'+比较人(personA,personB))代码>我认为如果键顺序不重要,那么使用“a[person1[I]!==b[person1[I]]将是better@Andy你能给我完整的密码吗。我是这里的初学者。