Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 如何精确检查数组中的重复对象?_Javascript_Arrays_Object - Fatal编程技术网

Javascript 如何精确检查数组中的重复对象?

Javascript 如何精确检查数组中的重复对象?,javascript,arrays,object,Javascript,Arrays,Object,我是javascript初学者,我想检查数组中完全重复的对象 像这样 array=[{name:'Tom',email:'Tom@gmail.com“},{姓名:'Pete',电子邮件:'Pete@gmail.com'}] 然后我有objectobject={name:'Tom',email:'Tom@gmail.com“} 当我将对象按入数组时,如array.push(object) 我想检查数组(数组[0])中的对象是否完全重复(每个键中的值相同) 如何?使用设置 创建一个集合并将所有值与

我是javascript初学者,我想检查数组中完全重复的对象 像这样

array=[{name:'Tom',email:'Tom@gmail.com“},{姓名:'Pete',电子邮件:'Pete@gmail.com'}]

然后我有object
object={name:'Tom',email:'Tom@gmail.com“}

当我将对象按入数组时,如
array.push(object)

我想检查数组(数组[0])中的对象是否完全重复(每个键中的值相同)

如何?

使用
设置

  • 创建一个
    集合
    并将所有值与一些您确定不会出现在值中的分隔符字符串连接起来(我选择了
    +

  • 因此,对于这个对象
    {name:“Tom”,email:Tom@gmail.com“}
    我们存储
    Tom+Tom@gmail.com
    集合中的

  • 现在,在再次按下的同时,使用相同的分隔符字符串连接所有值,并检查
    集中是否存在此分隔符

    • 如果有,不要推
    • 否则,将其推送到阵列
我在下面的代码段中尝试了推送两个对象,第一个对象没有被推送,而第二个对象被推送

警告
  • 假设您有一个对象,其中是
    name
    “Tom+”
    ,而
    email
    ”Tom@gmail.com
    {姓名:“汤姆”,电子邮件:Tom@gmail.com“}

  • 所以我们把汤姆储存起来++Tom@gmail.com“
集合中

  • 现在假设我们要插入一个对象,其中
    name
    Tom
    ,而
    email
    +Tom@gmail.com
    ,这绝对是与上述对象不同的对象

  • 但既然我们再次生成相同的字符串
    Tom++Tom@gmail.com
    要签入
    集合
    ,我们不会将此对象推送到阵列上

  • 因此,明智地选择分隔符字符串至关重要。

    const
    arr=[{姓名:“汤姆”,电子邮件:Tom@gmail.com},{姓名:“皮特”,电子邮件:Pete@gmail.com" }],
    s=新集合(arr.map((o)=>Object.values(o.join(“+”)),
    addNewObj=(arr,obj)=>{
    if(!s.has(Object.values(obj.join)(+)){
    方位推力(obj);
    }
    };
    addNewObj(arr,{姓名:“Tom”,电子邮件:Tom@gmail.com" });
    addNewObj(arr,{姓名:“John”,电子邮件:John@gmail.com" });
    
    控制台日志(arr)请提供@ProgrammingRage否,我想将对象推入数组如果数组中不存在像我想推入的对象那样的对象在所有验证成功之前不要将对象推入数组。如果任何验证失败,那么只需打印它是一个副本或执行任何您打算执行的操作。@Marimokung请检查这是否解决了您的问题,如果您有任何问题,请告诉我。