J'ai un tableau d'objets comme:
var a = [
{id: 1, name: 'A'},
{id: 2, name: 'B'},
{id: 3, name: 'C'},
{id: 4, name: 'D'}
];
Et tableau Ids que je veux supprimer du tableau A:
var removeItem = [1,2];
Je souhaite supprimer des objets de array a
en faisant correspondre ses identifiants, qui removeItem array
contient. Comment puis-je implémenter avec lodash.
J'ai vérifié la méthode _. Remove de lodash, mais cela nécessite une condition spécifique pour supprimer un élément du tableau. Mais j'ai une liste d'identifiants que je souhaite supprimer.
Comme vous l'avez mentionné, vous avez besoin du _.remove
et la condition spécifique que vous mentionnez est de savoir si le tableau removeItem
contient le id
de l'élément vérifié du tableau.
var removeElements = _.remove(a, obj => removeItem.includes(obj.id));
// you only need to assign the result if you want to do something with the removed elements.
// the a variable now holds the remaining array
Vous devez passer une fonction predicate
à .remove
méthode de lodash
.
var final = _.remove(a, obj => removeItem.indexOf(obj.id) > -1);
en utilisant la méthode indexOf
.
La méthode indexOf () renvoie le premier index auquel un élément donné peut être trouvé dans le tableau, ou -1 s'il n'est pas présent.
Vous pouvez le faire en utilisant native
javascript en utilisant la méthode filter
qui accepte comme paramètre une fonction callback.
var a = [
{id: 1, name: 'A'},
{id: 2, name: 'B'},
{id: 3, name: 'C'},
{id: 4, name: 'D'}
];
var removeItem = [1,2];
a = a.filter(function(item){
return removeItem.indexOf( item.id ) == -1;
});
console.log(a);
Mais la méthode filter
crée simplement un nouveau tableau en appliquant une fonction callback.
De documentation:
La méthode filter () crée un nouveau tableau avec tous les éléments qui réussissent le test implémenté par la fonction fournie.
Si vous souhaitez modifier le tableau d'origine, utilisez la méthode splice
.
var a = [
{id: 1, name: 'A'},
{id: 2, name: 'B'},
{id: 3, name: 'C'},
{id: 4, name: 'D'}
];
var removeItem = [1,2];
removeItem.forEach(function(id){
var itemIndex = a.findIndex(i => i.id == id);
a.splice(itemIndex,1);
});
console.log(a);