我要从阵列中删除itineraryLinked: null
值,请删除。我尝试了下面的代码,它不能正常工作,您能解释一下如何从数组中删除null itineraryLinked
子数组代码内部的数组从过滤器中删除空值。
我想使用内部路线从数组中删除空元素或空元素
这是我的回忆
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)
答案 0 :(得分:1)
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);
答案 1 :(得分:0)
在集合上映射
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;
});