-2
votes

Tableau de filtre d'objets par tableau de cordes

mon objet: xxx pré>

Mes données: p> xxx pré>

Je m'attends à ce que le résultat final soit: p>

const result = Object.keys(searchFor).map((key) => data.filter((obj) => obj.data === key))


0 commentaires

7 Réponses :


2
votes

Vous pouvez utiliser Array.Prototype .Filter () code> avec array.pototype.includes () code> :

p>

.as-console-wrapper{min-height:100%;}


2 commentaires

Merci de votre réponse et cela fonctionne et c'est impressionnant, je l'ai évité :) Mais cela ne l'a pas accepté car dans VS-Code avec Airbnb Eslint, je reçois cette alerte 'données' est déjà déclarée dans la portée supérieure. < / Code> En surbrillance sur ({DATA}) . En outre, je ne sais pas ce qui se passe ici ici ({data}) , est-ce que ({données: données}) ? La réponse acceptée me semble plus simple.


La déstructuration est une technique très puissante et est largement utilisée avec des bibliothèques frontales, comme React.js. Si vous souhaitez maîtriser cela et éviter au-dessus d'alerte ESLint, vous pouvez décompresser votre propriété Data dans la variable, nommée d d , par exemple ( data.filter ((((((( {Données: D}) => Searchfor.Inclut (d)) ) Ou vous pouvez procéder à une solution que vous avez choisie si elle se sent plus confortable pour vous. Cependant, si vous partagez vos préoccupations avant de faire votre décision, je vous aiderais volontiers à trier les choses.



1
votes

Vous pouvez prendre un Plan pour les touches / objets en paires et cartographiez les objets trouvés.

p>

const
    searchFor = ['appInfo', 'questions'],
    data = [{ id: '1', data: 'jobInfo' }, { id: '2', data: 'appInfo' }, { id: '3', data: 'documents' }, { id: '4', data: 'questions' }],
    result = searchFor.map(
        Map.prototype.get,
        new Map(data.map(o => [o.data, o]))
    );

console.log(result);


2 commentaires

Belle solution, mais il peut surperformer filtre () uniquement pour certains cas d'utilisation ultime (par exemple, quand Ce que vous recherchez n'est même pas là la plupart des temps )


@Yevgengorbunkov, c'était juste une idée d'un cas d'utilisation de la carte. Peut-être que la vitesse est meilleure à l'avenir en ayant de meilleurs compilateurs (optimiser) ...



0
votes

Vous pouvez utiliser:

const results = data.filter(item => searchFor.includes(item.data)):
console.log(results):


0 commentaires

1
votes

Vous pouvez utiliser les méthodes de tableau .Filter code> et .inclut code> (car Searchfor code> est une matrice.)

p>

const searchFor = ['appInfo', 'questions'];

const data = [
  { id: '1', data: 'jobInfo' },
  { id: '2', data: 'appInfo' },
  { id: '3', data: 'documents' },
  { id: '4', data: 'questions' },
];

const result = data.filter(item => searchFor.includes(item.data));
console.log(result);


0 commentaires

1
votes

Vous pouvez faire ceci:

p>

const searchFor = ['appInfo', 'questions'];


        const data = [
          { id: '1', data: 'jobInfo' },
          { id: '2', data: 'appInfo' },
          { id: '3', data: 'documents' },
          { id: '4', data: 'questions' },
        ];

var hashTable = {};

    searchFor.forEach(i=> hashTable[i] = true );

    var res = data.filter(i=>{
     return hashTable[i.data]
    });

    console.log(res)


0 commentaires

0
votes
 const result = data.filter((rec, id) => {
  if (searchFor.indexOf(rec.data) > -1) {
    return rec
  }
})

0 commentaires

0
votes
console.log(data.filter(element=>{
   return searchFor.includes(element.data)
}));
The idea here is you have to  take elements of data and then have to filter each element of data after matching with search for object  .since search for the object that contains your filter criteria so it has to be nested within external iteration i.e filter method we have passed on data object .

1 commentaires

Puis-je vous demander quelle est la valeur supplémentaire que vous attendiez d'apporter à ce fil d'heures de réponse presque identiques heures après l'OP avait fait son choix (étrange) de solution acceptée? MDN Docs (je parle de Ma réponse ) Expliquez parfaitement les méthodes utilisées de la meilleure façon possible. Vous n'avez même pas semblé vous soucier de faire un extrait en direct pour démontrer votre code en action.