Je veux convertit: à: J'ai déjà écrit une fonction pour le faire manuellement. p>
Y a-t-il une fonction de Lodash qui fait cela? ou manipuler une fonction existante pour obtenir le résultat souhaité? P> {port: {0: 23, 1: 22}, protocole: {0: "http", 1: '"https"}}} code> p> p> p>
[{port: 23, protocole: 'http'}, {port: 22, protocole: 'https'}] code> p>
3 Réponses :
Cela pourrait être une approche à l'aide de Vanillajs.
Carte tous les ports et les protocoles à deux tableaux différents.
Composez ensuite votre matrice finale Obtenir les valeurs des deux tableaux de construction.
De cette façon, vous aurez une complexité linéaire p> o (n) code>. P>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
Vous comptez sur le nom des propriétés. En outre, je n'ai pas cherché la mise en œuvre, mais une fonction lib / lodash existante qui le fait.
@Stavalfi j'ai utilisé les accessoires car il semblait que vos objets étaient statiques. Au fait, a ajouté une implémentation avec Loadash qui ne comporte même pas sur les noms de clés
Vous pouvez parcourir les entrées des objets et prendre les touches internes sous forme de touches de l'ensemble externe et vice versa.
p>
var data = { port: { 0: 23, 1: 22 }, protocol: { 0: "http", 1: "https" } }, result = Object.entries(data).reduce((r, [k, o]) => { Object.entries(o).forEach(([i, v]) => { r[i] = r[i] || {}; r[i][k] = v; }); return r; }, []); console.log(result);
Je n'ai pas cherché la mise en œuvre, mais une fonction lib / lodash existante qui le fait.
Il n'y a pas une seule fonction de lodash qui le fait, mais vous pouvez créer une fonction via Vous pouvez convertir l'objet à un Tableau de tableaux contenant l'étiquette et les valeurs, p> _. flux () code> pour obtenir le résultat souhaité.
_. Décompressez () code> à transposer, puis de mapper vers des objets à l'aide de
_. ZipObject () code>: p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>