Javascript 如何使用lodash检查两个对象的值是否相同
我有两个像下面这样的物体Javascript 如何使用lodash检查两个对象的值是否相同,javascript,object,lodash,Javascript,Object,Lodash,我有两个像下面这样的物体 const isDuplicate = (o1, o2) => { if ( o1.action === o2.action && o1.destination_port === o2.destination_port && o1.destination_subnet === o2.destination_subnet && o1.lan_interface === o2
const isDuplicate = (o1, o2) => {
if (
o1.action === o2.action &&
o1.destination_port === o2.destination_port &&
o1.destination_subnet === o2.destination_subnet &&
o1.lan_interface === o2.lan_interface &&
o1.protocol === o2.protocol &&
o1.source_port === o2.source_port &&
o1.source_subnet === o2.source_subnet &&
o1.wan_interface === o2.wan_interface
) {
return true;
} else {
return false;
}
};
目标1:
{
"action": "Accept",
"destination_port": "",
"destination_subnet": "192.168.1.2",
"id": "59-1601004430291",
"lan_interface": "eth0",
"order": 2,
"protocol": "any",
"source_port": "",
"source_subnet": "192.168.0.0/32",
"wan_interface": "wlan0"
}
目标2:
{
"action": "Accept",
"destination_port": "",
"destination_subnet": "0.0.0.0",
"lan_interface": "eth0",
"protocol": "tcp",
"source_port": "",
"source_subnet": "198.168.43.0",
"wan_interface": "wlan0"
}
我想比较两个对象并检查值是否相同。但是object1可能有一些在object2中不可用的属性
我已经完成了如下的实现
const isDuplicate = (o1, o2) => {
if (
o1.action === o2.action &&
o1.destination_port === o2.destination_port &&
o1.destination_subnet === o2.destination_subnet &&
o1.lan_interface === o2.lan_interface &&
o1.protocol === o2.protocol &&
o1.source_port === o2.source_port &&
o1.source_subnet === o2.source_subnet &&
o1.wan_interface === o2.wan_interface
) {
return true;
} else {
return false;
}
};
我想知道是否可以用lodash简化编辑:我弄错了你的问题,抱歉,再试一次
让obj1={
“行动”:“接受”,
“目的港”:“,
“目标子网”:“192.168.1.2”,
“id”:“59-1601004430291”,
“lan_接口”:“eth0”,
"命令":二,,
“协议”:“任何”,
“源端口”:“”,
“源子网”:“192.168.0.0/32”,
“wan_接口”:“wlan0”
};
设obj2={
“行动”:“接受”,
“目的港”:“,
“目标子网”:“0.0.0.0”,
“lan_接口”:“eth0”,
“协议”:“tcp”,
“源端口”:“”,
“源子网”:“198.168.43.0”,
“wan_接口”:“wlan0”
};
设obj3={
“行动”:“接受”,
“目标端口”:”
};
设obj4={
“行动”:“接受”,
“目标端口”:”
};
功能组件(obj1、obj2){
返回JSON.stringify(obj1)==JSON.stringify(obj2)
}
控制台日志(comp(obj1,obj2));
控制台日志(comp(obj3,obj4))代码>使用.isEqual()
比较要检查的两个项目的子集(通过.pick()
):
const isDuplicate=(…objs)=>\uq.isEqual(…objs.map(o=>\ujs.pick(
啊,,
['action'、'destination_port'、'destination_subnet'、'lan_interface'、'protocol'、'source_port'、'source_subnet'、'wan_interface'],
)))
const obj1={“action”:“Accept”,“destination_port”:“destination_subnet”:“192.168.1.2”,“id”:“59-1601004430291”,“lan_interface”:“eth0”,“order”:2,“protocol”:“any”,“source_port”:“source_subnet”:“192.168.0.0/32”,“wan_interface”:“wlan0”}
const obj2={“action”:“Accept”,“destination_port”:“destination_subnet”:“0.0.0.0”,“lan_interface”:“eth0”,“protocol”:“tcp”,“source_port”:“source_subnet”:“198.168.43.0”,“wan_interface”:“wlan0”}
常量结果=isDuplicate(obj1、obj2)
console.log(结果)
这是否回答了您的问题?您是否运行了此代码并检查了结果?它不起作用了再次检查我的评论,看看?@Tasos再次抱歉。我希望这就是你们正在寻找的东西。现在这是可行的,但对于那些在它们之间可能有更多属性的对象,我正在寻找更好的答案。编辑:看起来你找到了答案。