Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在js中比较两个可用密钥对象的现有数据_Javascript - Fatal编程技术网

Javascript 如何在js中比较两个可用密钥对象的现有数据

Javascript 如何在js中比较两个可用密钥对象的现有数据,javascript,Javascript,我有两个对象a和b我只想比较相同关键点的对象的数据 var a = {name1:'alisha',age:18,subject:{main:'javascript',major:'maths'}}; var b = {name1:'alisha',age:'18'}; function compareData(a,b){ return JSON.stringify(a) == JSON.stringify(b); } console.log(compareData(a,b))

我有两个对象ab我只想比较相同关键点的对象的数据

var a = {name1:'alisha',age:18,subject:{main:'javascript',major:'maths'}};
var b = {name1:'alisha',age:'18'};

 function compareData(a,b){
  return JSON.stringify(a) == JSON.stringify(b); 
 }

 console.log(compareData(a,b))

这是比较所有键,但我只想比较可用键的可用数据。我如何通过循环第一项键并检查:
1.它们存在
2.值是相同的

似乎有效:

var a={name1:'alisha',年龄:18岁,科目:{main:'javascript',专业:'math'};
变量b={姓名:'alisha',年龄:19};
功能相同(a、b){
//如果任何元素存在差异,则fat arrow函数返回true
return!Object.keys(a).some(key=>{
如果(b.hasOwnProperty(键)){
返回a[键]!==b[键];
}
返回false;
});
}

console.log(与(a,b)相同)
循环遍历第一项键并检查是否:
1.它们存在
2.值是相同的

似乎有效:

var a={name1:'alisha',年龄:18岁,科目:{main:'javascript',专业:'math'};
变量b={姓名:'alisha',年龄:19};
功能相同(a、b){
//如果任何元素存在差异,则fat arrow函数返回true
return!Object.keys(a).some(key=>{
如果(b.hasOwnProperty(键)){
返回a[键]!==b[键];
}
返回false;
});
}

console.log(a,b))
您可以使用它进行浅层比较:

// Returns true if the values are equal (shallow)
// for all properties that both objects have
function compareData(a,b){
  return Object.keys(a).filter( k => k in b ).every( k => a[k] === b[k] );
}
它将为您的对象返回false,因为一个对象有一个表示年龄的数字,另一个对象有一个字符串。对于这些对象,它将返回true:

var a = {name1:'alisha',age:18,subject:{main:'javascript',major:'maths'}};
var b = {name1:'alisha',age:18};
例如:

console.log(compareData({},{age:5}));//true(无共享属性)
log(compareData({age:5},{age:5}));//true(相等共享属性)
log(compareData({age:4},{age:5}));//假的
变量a={name1:'alisha',年龄:18岁,科目:{main:'javascript',专业:'math'};
变量b={name1:'alisha',年龄:18};
console.log(compareData(a,b));//真的
功能比较数据(a、b){
返回Object.keys(a).filter(k=>b中的k).every(k=>a[k]==b[k]);

}
您可以使用此选项进行浅层比较:

// Returns true if the values are equal (shallow)
// for all properties that both objects have
function compareData(a,b){
  return Object.keys(a).filter( k => k in b ).every( k => a[k] === b[k] );
}
它将为您的对象返回false,因为一个对象有一个表示年龄的数字,另一个对象有一个字符串。对于这些对象,它将返回true:

var a = {name1:'alisha',age:18,subject:{main:'javascript',major:'maths'}};
var b = {name1:'alisha',age:18};
例如:

console.log(compareData({},{age:5}));//true(无共享属性)
log(compareData({age:5},{age:5}));//true(相等共享属性)
log(compareData({age:4},{age:5}));//假的
变量a={name1:'alisha',年龄:18岁,科目:{main:'javascript',专业:'math'};
变量b={name1:'alisha',年龄:18};
console.log(compareData(a,b));//真的
功能比较数据(a、b){
返回Object.keys(a).filter(k=>b中的k).every(k=>a[k]==b[k]);

}
因此,如果
b
的所有键/值都在
a
中,您希望结果为真?或者如果至少有一个?还是别的什么?可能是一个关键点的交集,然后比较它们的值?很难说出你想要什么。迭代一个对象的属性,检查它是否包含在另一个具有
hasOwnProperty
in
的对象中,并进行比较。我希望返回true,因为年龄和姓名属性具有相同的数据,其中属性的顺序可能不正确请注意
JSON.stringify
不是用于此操作的正确工具,因为它的键顺序可能与您预期的不同。因此,如果
b
的所有键/值都在
a
中,您希望结果为真?或者如果至少有一个?还是别的什么?可能是一个关键点的交集,然后比较它们的值?很难说出你想要什么。迭代一个对象的属性,检查它是否包含在另一个具有
hasOwnProperty
in
的对象中,并进行比较。我希望返回true,因为年龄和姓名属性具有相同的数据,其中属性的顺序可能不正确请注意
JSON.stringify
不是用于此操作的正确工具,因为它可能会以不同于您预期的方式订购钥匙。