web-dev-qa-db-fra.com

Trouver tous les éléments correspondants dans un tableau d'objets

J'ai un tableau d'objets

Je recherche dans le tableau comme ceci

let arr = [
    { name:"string 1", arrayWithvalue:"1,2", other: "that" },
    { name:"string 2", arrayWithvalue:"2", other: "that" },
    { name:"string 2", arrayWithvalue:"2,3", other: "that" },
    { name:"string 2", arrayWithvalue:"4,5", other: "that" },
    { name:"string 2", arrayWithvalue:"4", other: "that" },
];
var item  = arr.find(item => item.arrayWithvalue === '4'); 
console.log(item)

Cela devrait retourner un tableau avec ces deux lignes

{ name:"string 2", arrayWithvalue:"4,5", other: "that" },
{ name:"string 2", arrayWithvalue:"4", other: "that" }

Il ne renvoie qu'une seule ligne qui est la première correspondance.

{ name:"string 2", arrayWithvalue:"4", other: "that" }

Je ne veux pas utiliser de bibliothèques externes pour cela. Comment puis-je retourner toutes les correspondances correspondant aux critères?

6
ankur

Vous devez utiliser la méthode filter à la place de find. Cela renverra un nouveau tableau contenant uniquement les membres qui renvoient une valeur véridique à partir de la fonction passée.

1
Richard Millen

Array.prototype.find(), conformément à la spécification MDN : renvoie la valeur du premier élément du tableau qui satisfait la fonction de test fournie .

Ce que vous souhaitez utiliser à la place est la fonction de filtre.filter() qui renverra un tableau de toutes les instances qui correspondent à votre fonction de test.

1
Adam

Utilisez la méthode de filtrage des tableaux. Comme

arr.filter(res => res.arrayWithvalue.indexOf('4') !== -1);
1
Abinash Ghosh