mon objet: Mes données: p> Je m'attends à ce que le résultat final soit: p> const result = Object.keys(searchFor).map((key) => data.filter((obj) => obj.data === key))
7 Réponses :
Vous pouvez utiliser Array.Prototype .Filter () code>
avec array.pototype.includes () code>
:
p>
.as-console-wrapper{min-height:100%;}
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}) CODE>. En outre, je ne sais pas ce qui se passe ici ici
({data}) code>, est-ce que
({données: données}) code>? 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 CODE> dans la variable, nommée
d
d code>, par exemple (
data.filter ((((((( {Données: D}) => Searchfor.Inclut (d)) Code>) 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.
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);
Belle solution, mais il peut surperformer filtre () code> 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) ...
Vous pouvez utiliser:
const results = data.filter(item => searchFor.includes(item.data)): console.log(results):
Vous pouvez utiliser les méthodes de tableau .Filter code> et p> .inclut code>
(car Searchfor code> est une matrice.)
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);
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)
const result = data.filter((rec, id) => { if (searchFor.indexOf(rec.data) > -1) { return rec } })
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 .
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.