In my Angular Application, I'm trying to get only the updated array which was modified from UI.
Here, I have two array where one of the role_name is changed. I wanted to compare and filter out the modified object and return only those modified arrays. (in this case, role_name values are modified)
I have tried filtering out with the help of ES6, but its not working.
Can someone help me where am I missing?
var arr1 = [ {
"num" : null,
"role_name" : "ABC",
"profile" : "ff",
"user" : "1234",
"rn" : "1",
"user_name" : "Rywan"
},
{
"num" : null,
"role_name" : "DEF",
"profile" : "ff",
"user" : "1234",
"rn" : "2",
"user_name" : "adecg"
},
{
"num" : null,
"role_name" : "GHJ",
"profile" : "ff",
"user" : "1234",
"rn" : "3",
"user_name" : "dde"
},
{
"num" : null,
"role_name" : "RRT",
"profile" : "ff",
"user" : "1234",
"rn" : "4",
"user_name" : "kumar"
},
{
"num" : null,
"role_name" : "SFR",
"profile" : "ff",
"user" : "1234",
"rn" : "5",
"user_name" : "SASI"
}
];
var arr2 = [ {
"num" : null,
"role_name" : "ABC",
"profile" : "ff",
"user" : "1234",
"rn" : "1",
"user_name" : "Rywan"
},
{
"num" : null,
"role_name" : "ROLE_CHANGED",
"profile" : "ff",
"user" : "1234",
"rn" : "2",
"user_name" : "adecg"
},
{
"num" : null,
"role_name" : "GHJ",
"profile" : "ff",
"user" : "1234",
"rn" : "3",
"user_name" : "dde"
},
{
"num" : null,
"role_name" : "RRT",
"profile" : "ff",
"user" : "1234",
"rn" : "4",
"user_name" : "kumar"
},
{
"num" : null,
"role_name" : "SFR",
"profile" : "ff",
"user" : "1234",
"rn" : "5",
"user_name" : "SASI"
}
];
let filteredData;
filteredData = arr1.filter(function(o1){
//filter out (!) items in arr2
return arr2.some(function(o2){
return o1.role_name !== o2.role_name;
});
});
console.log(filteredData);
output should be
[
{
"num" : null,
"role_name" : "ROLE_CHANGED",
"profile" : "ff",
"user" : "1234",
"rn" : "2",
"user_name" : "adecg"
}
]
const filteredData = arr2.filter((item, index) => item.role_name !== arr1[index].role_name);