2017-05-04 60 views
-1

我不得不对象数组 ARR1 = [...] ARR2 = [...]滤波对象的两个阵列

现在我想找到匹配基于它对象的ID和那么值从一个到另一个复制我做了这个使用循环:

for (let newCampaignState of data) { 
      for (let oldCampaignState of this.campaigns) { 
       if (oldCampaignState.id === newCampaignState.id) { 
        oldCampaignState.name = newCampaignState.name; 
       } 
      } 
     } 

我怎么可以这样使用函数编程?

+0

的可能的复制[如何合并在Javascript两个数组并删除重复的项目](HTTP:/ /stackoverflow.com/questions/1584370/how-to-merge-two-arrays-in-javascript-and-de-duplicate-items) – Erazihel

回答

0

您可以使用过滤器功用:

代码

var arr1 = [{ 
 
    name: 'category1', 
 
    id: '1' 
 
}, { 
 
    name: 'category3', 
 
    id: '2' 
 
}, { 
 
    name: 'category2', 
 
    id: '2' 
 
}]; 
 

 
var arr2 = [{ 
 
    name: 'category2', 
 
    id: '5' 
 
}, { 
 
    name: 'category2', 
 
    id: '1' 
 
}, { 
 
    name: 'category2', 
 
    id: '2' 
 
}]; 
 

 

 
let filtered = []; 
 

 
arr1.filter(function(newData) { 
 
    return arr2.filter(function(oldData) { 
 
     if (newData.id === oldData.id && newData.name === oldData.name) { 
 
     filtered.push({ 
 
     'id': newData.id, 
 
     'name': newData.name 
 
     }) 
 
    } 
 
    }) 
 
}); 
 

 
document.body.innerHTML = ""; 
 
document.body.appendChild(document.createTextNode(JSON.stringify(filtered, null, 4)));
body { 
 
    white-space: pre; 
 
    font-family: monospace; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>