This is my dataFilter. On basis of this I am trying to remove keys from my data.
I want to remove keys that are mentioned in responseKeys and ratings array.
I am stuck and unable to remove keys from ratings array. Is there any way I can do recursion for this problem.
let dataFilter = {
"webPage1": {
"responseKeys": ["releaseDate", "filmName"]
},
"webPage2": {
"responseKeys": ["releaseDate", "ratings"],
"ratings": [
"star2",
"star3"
]
}
}
let data = [{
"filmName": "Avatar",
"releaseDate": "2021-09-24",
"day": "24",
"month": "Sep",
"ratings": [{
"star1": "40",
"star2": "23",
"star3": "56",
"star4": "45"
},
{
"star1": "40",
"star2": "23",
"star3": "56",
"star4": "45"
},
{
"star1": "40",
"star2": "23",
"star3": "56",
"star4": "45"
}
]
},
{
"filmName": "Morgan",
"releaseDate": "2021-03-24",
"day": "24",
"month": "Mar",
"ratings": [{
"star1": "40",
"star2": "23",
"star3": "56",
"star4": "45"
},
{
"star1": "40",
"star2": "23",
"star3": "56",
"star4": "45"
},
{
"star1": "40",
"star2": "23",
"star3": "56",
"star4": "45"
}
]
}
]
const filterResponse = (data, dataFilter = '') => {
if (dataFilter) {
let filterArray = [];
data.forEach((item) => {
let response = Object.keys(item)
.filter(key => dataFilter.responseKeys.includes(key))
.reduce((obj, key) => {
obj[key] = item[key];
return obj;
}, {});
filterArray.push(response);
});
return filterArray;
}
return data;
};
console.log(filterResponse(data, dataFilter['webPage1']));
trying to filter my data depending upon my json config.
Expected Output
//webPage1
[{
"filmName": "Avatar",
"releaseDate": "2021-09-24"
},
{
"filmName": "Morgan",
"releaseDate": "2021-03-24"
}
]
//webPage2
[{
"releaseDate": "2021-09-24",
"ratings: [{
"star2": "23",
"star3": "56"
},
{
"star2": "23",
"star3": "56"
},
{
"star2": "23",
"star3": "56"
}
]
}, {
"releaseDate": "2021-03-24",
"ratings": [{
"star2": "23",
"star3": "56"
}, {
"star2": "23",
"star3": "56"
}, {
"star2": "23",
"star3": "56"
}]
}]