0
votes

Copier un champ unique de tous les objets dans la matrice en tableau unique

Je voulais optimiser mon code supprimer un pour-boucle . xxx

data est un tableau d'objets, chacun ayant 4 Champs.

 Entrez la description de l'image ici

Je suis intéressé par celui identifié comme groupfieldname . < P> Y a-t-il un moyen d'éviter la boucle et de pousser directement les champs dans le tableau?

edit:

Je suis allé avec @Yosvel Quintero Suggestion ( Pour tous les gars suggérant la solution de carte, il était le premier) et vérifié la performance. Avec une matrice de données ayant ~ 60k objets que j'ai:

  • 3 ms à l'aide de mappe ;
  • 11ms en utilisant for-boucle

    pas mal.


4 commentaires

Array.pototype.map ()


Vous pouvez utiliser .map à la place, mais si vous recherchez un code efficace optimal, il n'est pas possible de battre un pour boucle ...


Vous pouvez utiliser mappe ou foreach , quoi que ce soit, il va itre, juste la boucle ne sera pas dans votre code, mais vous ne pouvez pas l'éviter.


Je ne connais pas votre exigence, mais vous pouvez peut-être garder l'objet complet et où vous avez besoin de groupfieldName, utilisez simplement des destructures d'objet {groupfieldname} = obj; ou en méthodes MethodName ({groupfieldname}) {//}


4 Réponses :


2
votes

Vous pouvez utiliser Array.ProTotype. mappe () xxx

à: xxx


1 commentaires

Comme @sjahan a souligné, cela compte toujours une boucle, même si vous ne pouvez pas le voir. Je cherchais quelque chose comme Mem-copier ou des trucs comme ça. Mais je vois l'élégance dans ce que vous avez proposé.



1
votes

Vous pouvez utiliser efficacement l'intégré . map () strong> ici comme suit -

p>

var data = [
	{ id: 1, groupFieldName: 'abcd' },
	{ id: 2, groupFieldName: 'pars' }
];
var groupFieldNames = data.map(obj => obj.groupFieldName)
console.log(groupFieldNames);


0 commentaires

0
votes

Vous pouvez utiliser mapper code>

p>

var groupFieldNames = [];
var data=[{groupFieldName:'a'},{groupFieldName:'b'},{groupFieldName:'c'}]
data.forEach(x=>groupFieldNames.push(x.groupFieldName))
  console.log(groupFieldNames)


0 commentaires

1
votes

Vous pouvez utiliser Array .pototype.map () code> avec assignation de déstructuration code> de la manière suivante:

p>

const data = [
  {id: 66, groupFieldName: 'test', other: 'other'},
  {id: 66, groupFieldName: 'test2', other: 'other2'}
];

const groupFieldNames = data.map(({groupFieldName}) => groupFieldName);
console.log(groupFieldNames);


0 commentaires