简体   繁体   中英

How to remove Array inside subArray Null value Javascript using Filter

I want to remove itineraryLinked: null value remove from the array. I tried below code its not working can you please explain how to remove the null itineraryLinked from array

Array inside subarray code remove null value remove from filter..

I want to remove null or empty elements from an array using inside itineraries

This my josn

 let destinationList = [{ "name": "Bahamas", "slug": "bahamas", "description": "asdfsadf", "weekEnabled": false, "itineraries": [{ "name": "Les Bahamas - Archipel des Exumas", "slug": "les-bahamas-archipel-des-exumas", "itineraryLinked": null }], "featured": false, "future": false, "sort": 8, "minPrice": null }, { "name": "Croatie & Monténégro", "slug": "croatie-montenegro", "description": "avfdsaf", "thumbnail": "uploads/2019/02/2_croatie-thumbnail.jpg", "weekEnabled": true, "itineraries": [{ "name": "Croatie, la côte adriatique depuis Dubrovnik", "slug": "croatie-la-cote-adriatique-depuis-dubrovnik", "itineraryLinked": { "name": "Monténégro, les gorges du Kotor depuis Dubrovnik", "slug": "montenegro-les-gorges-du-kotor-depuis-dubrovnik" } }, { "name": "Monténégro, les gorges du Kotor depuis Dubrovnik", "slug": "montenegro-les-gorges-du-kotor-depuis-dubrovnik", "itineraryLinked": { "name": "Croatie, la côte adriatique depuis Dubrovnik", "slug": "croatie-la-cote-adriatique-depuis-dubrovnik" } } ], "featured": false, "future": false, "sort": 3, "minPrice": null }, { "name": "Guadeloupe", "slug": "guadeloupe", "description": "sdafsda", "thumbnail": "uploads/2019/02/guadeloupe-thumbnail.jpg", "weekEnabled": false, "itineraries": [{ "name": "Guadeloupe Marie Galante Les Saintes Antigua", "slug": "guadeloupe-marie-galante-les-saintes-antigua", "itineraryLinked": null }], "featured": false, "future": false, "sort": 6, "minPrice": null }, { "name": "St Barth & îles Vierges", "slug": "st-barth-iles-vierges", "description": "sadfdsagf", "thumbnail": "uploads/2019/04/st-barth-iles-vierges-thumbnail.jpg", "weekEnabled": true, "itineraries": [{ "name": "Iles Vierges, Tortola", "slug": "iles-vierges-tortola", "itineraryLinked": { "name": "Croisière Turquoise - Saint Martin, Saint Barth, Archipel d'Anguilla", "slug": "croisiere-turquoise-saint-martin-saint-barth-archipel-danguilla" } }, { "name": "Croisière Turquoise - Saint Martin, Saint Barth, Archipel d'Anguilla", "slug": "croisiere-turquoise-saint-martin-saint-barth-archipel-danguilla", "itineraryLinked": { "name": "Iles Vierges, Tortola", "slug": "iles-vierges-tortola" } } ], "featured": false, "future": false, "sort": 5, "minPrice": null }, { "name": "Côte d'Azur", "slug": "cote-dazur", "description": "sadf", "thumbnail": "uploads/2018/11/cote-dazur-thumbnail.jpg", "weekEnabled": null, "itineraries": [{ "name": "Côte d'Azur des îles d'Or aux îles de Lérins", "slug": "cote-dazur-des-iles-dor-aux-iles-de-lerins", "itineraryLinked": null }], "featured": false, "future": false, "sort": 1, "minPrice": null } ] let linkedItinery = destinationList.filter(function(element) { return element.itineraries.filter(function(subElement) { return element.itineraries.some(function(v) { return v.itineraryLinked !== null; }); }); }); console.log(linkedItinery) 

There is no need of some within the filter . You can use use reduce with filter inside it.

 let destinationList = [{ "name": "Bahamas", "slug": "bahamas", "description": "asdfsadf", "weekEnabled": false, "itineraries": [{ "name": "Les Bahamas - Archipel des Exumas", "slug": "les-bahamas-archipel-des-exumas", "itineraryLinked": null }], "featured": false, "future": false, "sort": 8, "minPrice": null }, { "name": "Croatie & Monténégro", "slug": "croatie-montenegro", "description": "avfdsaf", "thumbnail": "uploads/2019/02/2_croatie-thumbnail.jpg", "weekEnabled": true, "itineraries": [{ "name": "Croatie, la côte adriatique depuis Dubrovnik", "slug": "croatie-la-cote-adriatique-depuis-dubrovnik", "itineraryLinked": { "name": "Monténégro, les gorges du Kotor depuis Dubrovnik", "slug": "montenegro-les-gorges-du-kotor-depuis-dubrovnik" } }, { "name": "Monténégro, les gorges du Kotor depuis Dubrovnik", "slug": "montenegro-les-gorges-du-kotor-depuis-dubrovnik", "itineraryLinked": { "name": "Croatie, la côte adriatique depuis Dubrovnik", "slug": "croatie-la-cote-adriatique-depuis-dubrovnik" } } ], "featured": false, "future": false, "sort": 3, "minPrice": null }, { "name": "Guadeloupe", "slug": "guadeloupe", "description": "sdafsda", "thumbnail": "uploads/2019/02/guadeloupe-thumbnail.jpg", "weekEnabled": false, "itineraries": [{ "name": "Guadeloupe Marie Galante Les Saintes Antigua", "slug": "guadeloupe-marie-galante-les-saintes-antigua", "itineraryLinked": null }], "featured": false, "future": false, "sort": 6, "minPrice": null }, { "name": "St Barth & îles Vierges", "slug": "st-barth-iles-vierges", "description": "sadfdsagf", "thumbnail": "uploads/2019/04/st-barth-iles-vierges-thumbnail.jpg", "weekEnabled": true, "itineraries": [{ "name": "Iles Vierges, Tortola", "slug": "iles-vierges-tortola", "itineraryLinked": { "name": "Croisière Turquoise - Saint Martin, Saint Barth, Archipel d'Anguilla", "slug": "croisiere-turquoise-saint-martin-saint-barth-archipel-danguilla" } }, { "name": "Croisière Turquoise - Saint Martin, Saint Barth, Archipel d'Anguilla", "slug": "croisiere-turquoise-saint-martin-saint-barth-archipel-danguilla", "itineraryLinked": { "name": "Iles Vierges, Tortola", "slug": "iles-vierges-tortola" } } ], "featured": false, "future": false, "sort": 5, "minPrice": null }, { "name": "Côte d'Azur", "slug": "cote-dazur", "description": "sadf", "thumbnail": "uploads/2018/11/cote-dazur-thumbnail.jpg", "weekEnabled": null, "itineraries": [{ "name": "Côte d'Azur des îles d'Or aux îles de Lérins", "slug": "cote-dazur-des-iles-dor-aux-iles-de-lerins", "itineraryLinked": null }], "featured": false, "future": false, "sort": 1, "minPrice": null } ]; const output = destinationList.reduce((accu, {itineraries}) => { accu.push(...itineraries.filter(({itineraryLinked}) => itineraryLinked !== null)); return accu; }, []); console.log(output); 

Map over the collection

let linkedItinery = destinationList.map(function(element) {
    // ...
    Filter out the subDocuments (with null values)
    element.itineraries = element.itineraries.filter(function(subElement) {
      return subElement.itineraryLinked !== null;
    });
    // Replace the original doc
    return element;
  });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM