【问题标题】:How to remove Array inside subArray Null value Javascript using Filter如何使用过滤器删除子数组空值Javascript中的数组
【发布时间】:2019-05-03 07:42:32
【问题描述】:

我想从数组中删除 itineraryLinked: null 值。我试过下面的代码它不起作用,你能解释一下如何从数组中删除 null itineraryLinked

子数组中的数组代码删除空值从过滤器中删除..

我想使用内部行程从数组中删除 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)

【问题讨论】:

    标签: javascript angular typescript multidimensional-array


    【解决方案1】:

    filter 中不需要some。您可以在其中使用 reducefilter

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

    【讨论】:

    • 谢谢randomSoul..这个数组如何映射到主数组(原始数组)..你能解释一下吗提前谢谢..
    • 我没听懂你的问题?
    【解决方案2】:

    在集合上映射

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

    【讨论】:

    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多