簡體   English   中英

如何使用過濾器在subArray Null值Javascript中刪除Array

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

我想刪除itineraryLinked: null從數組中刪除itineraryLinked: null值。 我在下面的代碼中嘗試了它不起作用,請您解釋一下如何從數組中刪除null itineraryLinked

子數組代碼中的數組從過濾器中刪除null值

我想使用內部行程從數組中刪除null或空元素

這是我的喬恩

 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) 

filter內不需要some filter 您可以在其中使用帶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); 

映射集合

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