简体   繁体   English

如何使用过滤器在subArray Null值Javascript中删除Array

[英]How to remove Array inside subArray Null value Javascript using Filter

I want to remove itineraryLinked: null value remove from the array. 我想删除itineraryLinked: null从数组中删除itineraryLinked: null值。 I tried below code its not working can you please explain how to remove the null itineraryLinked from array 我在下面的代码中尝试了它不起作用,请您解释一下如何从数组中删除null itineraryLinked

Array inside subarray code remove null value remove from filter.. 子数组代码中的数组从过滤器中删除null值

I want to remove null or empty elements from an array using inside itineraries 我想使用内部行程从数组中删除null或空元素

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 . filter内不需要some filter You can use use reduce with filter inside it. 您可以在其中使用带filter use reduce

 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;
  });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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