Reputation: 3
How to filter nested array in this jSon , I need to filter publisher --> magazines ---> enabled True object Data only
original JSON
{
"slug": "test",
"logo": "dd3d769a86d4c8a91dcbf05bf22e04eda7b73e04.png",
"publishers": [
{
"name": "publisher 1",
"magazines": [
{
"name": "name-1",
"startDate": "2020-09-01T00:00:00+0000",
"endDate": "2021-09-02T00:00:00+0000",
"enabled": false,
},
{
"name": "name- 2",
"startDate": "2020-09-11T00:00:00+0000",
"endDate": "2020-09-18T00:00:00+0000",
"enabled": true,
},
{
"name": "name- 2",
"startDate": null,
"endDate": null,
"enabled": false,
}]
},
{
"name": "publisher 2",
"magazines": [
{
"name": "name- 1",
"startDate": null,
"endDate": null,
"enabled": true,
}
{
"name": "name - 2",
"startDate": null,
"endDate": null,
"enabled": false,
}]
}],
"locale": "in",
}
OutPut Json
{
"slug": "test",
"logo": "dd3d769a86d4c8a91dcbf05bf22e04eda7b73e04.png",
"publishers": [
{
"name": "publisher 1",
"magazines": [
{
"name": "name- 2",
"startDate": "2020-09-11T00:00:00+0000",
"endDate": "2020-09-18T00:00:00+0000",
"enabled": true,
},
]
},
{
"name": "publisher 2",
"magazines": [
{
"name": "name- 1",
"startDate": null,
"endDate": null,
"enabled": true,
}]
}],
"locale": "in"
}
Thanks in advance
Upvotes: 0
Views: 308
Reputation: 1
This is your correct json
{
"slug": "test",
"logo": "dd3d769a86d4c8a91dcbf05bf22e04eda7b73e04.png",
"publishers": [
{
"name": "publisher 1",
"magazines": [
{
"name": "name-1",
"startDate": "2020-09-01T00:00:00+0000",
"endDate": "2021-09-02T00:00:00+0000",
"enabled": false,
},
{
"name": "name- 2",
"startDate": "2020-09-11T00:00:00+0000",
"endDate": "2020-09-18T00:00:00+0000",
"enabled": true,
},
{
"name": "name- 2",
"startDate": null,
"endDate": null,
"enabled": false,
}]
},
{
"name": "publisher 2",
"magazines": [
{
"name": "name- 1",
"startDate": null,
"endDate": null,
"enabled": true,
},
{
"name": "name - 2",
"startDate": null,
"endDate": null,
"enabled": false,
}]
}],
"locale": "in",
}
and try this code:
var testObj={your Json data...};
for(i=0; i < testObj.publishers.length; i++){
if(testObj.publishers[i].enabled == false){
//console.log('exist');
testObj.publishers.splice(i, 1);
}
}
Upvotes: 0
Reputation: 684
with map and filter:
const testObj = {yourObject...}
testObj.publishers.map(publisher => (publisher.magazines.filter(magazine => magazine.enabled === true)[0]))
Upvotes: 0
Reputation: 17400
Same as any other array: With Array.filter
let origdata = {...}
for (let publisher of origdata.publishers) {
publisher.magazines = publisher.magazines.filter(x => x.enabled === true);
}
Upvotes: 1