1. ホーム
  2. javascript

[解決済み] オブジェクトの配列を別のオブジェクトの配列でフィルタリングする

2022-02-10 16:58:04

質問

この質問はこの質問に似ています Jqueryでオブジェクトの配列をループでフィルタリングする が、今回はオブジェクトの配列でフィルタリングを行う必要があります。

このようなオブジェクトの配列を持っています。

myArray = [
{
    userid: "100", 
    projectid: "10",
    rowid: "0"
},
{
    userid: "101", 
    projectid: "11",
    rowid: "1"},
{    
    userid: "102", 
    projectid: "12",
    rowid: "2"},
{    
    userid: "103", 
    projectid: "13",
    rowid: "3"
},
{    
    userid: "101", 
    projectid: "10",
    rowid: "4"
}
...]

このような配列でフィルタリングしたい。

myFilter = [
{
    userid: "101", 
    projectid: "11"
},
{
    userid: "102", 
    projectid: "12"
},
{
    userid: "103", 
    projectid: "11"
}]

で、これを返します (myFilter の userid と projectid は myArray の userid と projectid に一致させる必要があります)。

myArrayFiltered = [
{
    userid: "101", 
    projectid: "11",
    rowid: "1"
},
{
    userid: "102", 
    projectid: "12",
    rowid: "2"
}]

どうすればいいのでしょうか?

どのように解決するのですか?

var filtered = [];

for(var arr in myArray){
   for(var filter in myFilter){
       if(myArray[arr].userid == myFilter[filter].userid && myArray[arr].projectid == myFilter[filter].projectid){
          filtered.push(myArray[arr].userid);
         }
   }
}
console.log(filtered);