Как удалить Array внутри subArray Нулевое значение Javascript с помощью фильтра - PullRequest
0 голосов
/ 03 мая 2019

Я хочу удалить itineraryLinked: null значение удалить из массива. Я попробовал ниже код его не работает, вы можете объяснить, как удалить нулевой маршрутLinked из массива

Массив внутри кода подмассива удалить нулевое значение удалить из фильтра.

Я хочу удалить пустые или пустые элементы из массива, используя внутренние маршруты

Это мой Йосн

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)

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Нет необходимости в some в пределах filter.Вы можете использовать reduce с filter внутри него.

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);
0 голосов
/ 03 мая 2019

Карта над коллекцией

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;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...