大佬教程收集整理的这篇文章主要介绍了如何通过键 + 值比较 ES6 中的 2 个对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何使用 ES6 比较 2 个对象及其值?
我拥有的对象:
我想检查 obj1[key] 是否存在于 obj2 中。 并且如果这个key在obj2中的值与obj1中的相同则返回true;
PS 我对编程有点陌生
假设上面例子中的对象不相等并且上面“相等”的定义是不完整的(假设我们只想处理对象)下面应该可以工作:
function equals(o1,o2) {
if (typeof o1 !== 'object' || typeof o2 !== 'object') {
return false; // we compare objects only!
}
// when one object has more attributes than the other - they can't be eq
if (Object.keys(o1).length !== Object.keys(o2).length) {
return false;
}
for (let k of Object.keys(o1)) {
if (o1[k] !== o2[k]) {
return false;
}
}
return true;
}
澄清一下,根据问题中的定义,以下对象是相等的:
o1 = { a: 1 };
o2 = { a: 1,b: 2 };
但我很难相信这是 OP 的意图!
,我用“伪代码”注释做了一个简单的模型,应该可以帮助你理解
function checkObjInTables(tab1,tab2,key){
// return {KEY EXIST IN TABLE 1} AND {KEY EXIST IN TABLE 2} AND {VALUE OF KEY IN TABLE 1} IS EQUAL TO {VALUE OF KEY IN TABLE 2}
return key in tab1 && key in tab2 && tab1[key] == tab2[key];
};
let obj1 = { c: 1,o: 1,m: 2,a: 1,s: 1 }
let obj2 = { a: 4,b: 2,c: 3,s: 1,d: 2 }
console.log(checkObjInTables(obj1,obj2,"s")); // true
console.log(checkObjInTables(obj1,"a")); // false
,
有一种 JavaScript 方式。
let obj1 = { c: 1,s: 1 };
let obj2 = { a: 4,d: 2 };
const isObject = obj => typeof obj === 'object' && obj !== null;
function check(obj1,obj2) {
// check if both inputs are object and not null
if(!isObject(obj1) || !isObject(obj2)) return false;
// check if both obj has equal size
if(Object.keys(obj1) !== Object.keys(obj2)) return false;
for (const key of Object.keys(obj1)) {
if (!(key in obj2) || obj1[key] !== obj2[key]) return false;
}
return true;
}
console.log(check(obj1,obj2));
以上是大佬教程为你收集整理的如何通过键 + 值比较 ES6 中的 2 个对象全部内容,希望文章能够帮你解决如何通过键 + 值比较 ES6 中的 2 个对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。