javascript - JS 过滤两个对象数组。没有得到独一无二的

标签 javascript

我正在尝试从数组二中过滤数组一的值。但我没有得到这三个值。我只需要具有唯一 id 的对象。

我需要 { id: 28 ,name: "sdfsdf"} .. 仅此

我现在正在尝试这个。但到达那里。有什么帮助吗?

var arr1 = [
        {   
         id :  { oid : 23 },
         name : "nahid"
        } , 
        
         {  
         
         id :  { oid : 24 },
         name : "nahidsdsd"
    
        } , 
         {  
         
         id :  { oid : 26 },
         name : "nahidtytuyu"
    
        } , 
       
    ]
    
    var arr2 = [
         {   
         id :  { oid : 23 },
         name : "nahid"
        } , 
        
         {  
         
         id :  { oid : 24 },
         name : "nahidsdsd"
    
        } , 
         {  
         
         id :  { oid : 26 },
         name : "nahidtytuyu"
    
        } , 
         {  
         id :  { oid : 28 },
         name : "nahidtytuyu"
         } , 
    ]
    
    
    var res = arr2.filter( data => {
    
       var temp; 
       arr1.map( data2 =>  {
           temp = data2;
       } )
       
        return temp.id.oid != data.id.oid
     
        
    } )
    
    console.log(res)

(3) [{…}, {…}, {…}] 0 : {id: {…}, name: "nahid"} 1 : {id: {…}, name: "nahidsdsd"} 2 : {id: {…}, name: "nahidtytuyu"} length : 3

最佳答案

这是您需要的答案,

    var arr1 = [
        {   
         id :  { oid : 23 },
         name : "nahid"
        } , 
    
         {  
    
         id :  { oid : 24 },
         name : "nahidsdsd"
    
        } , 
         {  
    
         id :  { oid : 26 },
         name : "nahidtytuyu"
    
        } , 
    
    ]
    
    var arr2 = [
         {   
         id :  { oid : 23 },
         name : "nahid"
        } , 
    
         {  
    
         id :  { oid : 24 },
         name : "nahidsdsd"
    
        } , 
         {  
    
         id :  { oid : 26 },
         name : "nahidtytuyu"
    
        } , 
         {  
         id :  { oid : 28 },
         name : "nahidtytuyu"
         } , 
    ]
    
    function difference(otherArray){
      return function(current){
        return otherArray.filter(function(other){
          return other.id.oid == current.id.oid
        }).length == 0;
      }
    }
    
    var onlyInA = arr1.filter(difference(arr2));
    var onlyInB = arr2.filter(difference(arr1));
    
    result = onlyInA.concat(onlyInB);
    console.log(result)

请运行上面的代码并检查控制台

Here is a working demo

关于javascript - JS 过滤两个对象数组。没有得到独一无二的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753692/

相关文章:

c# - Ajax Calendar Extender 在 Asp.net Web 应用程序中不工作

javascript - 在添加的 jQuery 函数中,我可以知道触发的 DOM 对象吗?

javascript - 在 JavaScript 中获取不同的集合

Javascript 逻辑 OR 和对象

JavaScript:这段代码有什么问题?

javascript - 获取使用 Jest 运行的测试列表(不运行套件)

javascript - 如何使用纯 Javascript 将 onclick 函数添加到动态创建的 div

javascript - React-data-grid setScrollLeft 不是一个函数 - 固定列不起作用 - 自定义行渲染器

javascript - 在列表中单击 > 获取根 UL ID

javascript - 如何将内容加载到导航栏上的节元素中单击