Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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检查两个对象的值是否相同_Javascript_Object_Lodash - Fatal编程技术网

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再次抱歉。我希望这就是你们正在寻找的东西。现在这是可行的,但对于那些在它们之间可能有更多属性的对象,我正在寻找更好的答案。编辑:看起来你找到了答案。