Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 你如何比较钥匙和钥匙;当一个对象使用Lodash具有额外的键时,JSON对象中的值?_Javascript_Json_Compare_Lodash - Fatal编程技术网

Javascript 你如何比较钥匙和钥匙;当一个对象使用Lodash具有额外的键时,JSON对象中的值?

Javascript 你如何比较钥匙和钥匙;当一个对象使用Lodash具有额外的键时,JSON对象中的值?,javascript,json,compare,lodash,Javascript,Json,Compare,Lodash,我有两个JSON对象,如下所示: var obj1 = {a: "apple", b: "banana", c: "carrot"} var obj2 = {a: "apple", e: “egg” b: "banana", c: "carrot", d: "dog"} 我希望能够对两个对象进行布尔检查,而不必从其中任何一个对象中删除数据。例如,如果要使用

我有两个JSON对象,如下所示:

var obj1 = {a: "apple", b: "banana", c: "carrot"}
var obj2 = {a: "apple", e: “egg” b: "banana", c: "carrot", d: "dog"}
我希望能够对两个对象进行布尔检查,而不必从其中任何一个对象中删除数据。例如,如果要使用上面的数据,布尔检查应该返回true,因为两个对象中的键的值都匹配

但是,假设
obj1
保持不变,但是
obj2
如下所示:

var obj1 = {a: "apple", b: "banana", c: "carrot"}
var obj2 = {a: "ant", e: “egg” b: "banana", c: "carrot", d: "dog"}
对于此数据,它应该返回false,因为a键的值不匹配,即使其他字段匹配并且两个对象中都不存在某些字段


有什么想法吗?我更喜欢使用Lodash,因为他们有一个高质量的库。最初我试图使用isEqual(obj1,obj2),但它不能满足我的确切需要。

我不知道
lodash
是否有这样的方法。但是,只要使用
Object.etnries
Array.every
方法,就可以获得相同的结果

var obj1={
a:“苹果”,
b:“香蕉”,
c:“胡萝卜”
}
变量obj2={
a:“苹果”,
b:“香蕉”,
c:“胡萝卜”,
d:“狗”,
e:“鸡蛋”
}
var obj3={a:“苹果”,b:“香蕉”,c:“胡萝卜”}
var obj4={a:“蚂蚁”,e:“蛋”,b:“香蕉”,c:“胡萝卜”,d:“狗”}
函数检查相等(a,b){
常数entries1=对象项(a);
常数entries2=对象条目(b);
const short=entries1.length>entries2?entries2:entries1;//选择较短的数组
常量长=短===entries1?b:a;
常数isEqual=short.every([k,v])=>long[k]==v;
回报均等;
}
console.log(检查相等性(obj1、obj2))

console.log(checkEquality(obj3,obj4))
。.isMatch
可以提供帮助。检查下面的代码片段

var obj1={
a:“苹果”,
b:“香蕉”,
c:“胡萝卜”
}
变量obj2={
a:“苹果”,
e:“鸡蛋”,
b:“香蕉”,
c:“胡萝卜”,
d:“狗”
}
console.log(u.isMatch(obj2,obj1));
变量obj1={
a:“苹果”,
b:“香蕉”,
c:“胡萝卜”
}
变量obj2={
a:“蚂蚁”,
e:“鸡蛋”,
b:“香蕉”,
c:“胡萝卜”,
d:“狗”
}
console.log(u.isMatch(obj2,obj1))

谢谢您的帮助!还在学习Lodash,所以这真的很有帮助!即使这不使用Lodash,这仍然是一个帮助我扩展JS技能的高质量答案,非常感谢!