-2
votes

Comment créer une matrice de plusieurs objets d'objet qui représente des objets

Je veux convertit: {port: {0: 23, 1: 22}, protocole: {0: "http", 1: '"https"}}}

à: [{port: 23, protocole: 'http'}, {port: 22, protocole: 'https'}]

J'ai déjà écrit une fonction pour le faire manuellement.

Y a-t-il une fonction de Lodash qui fait cela? ou manipuler une fonction existante pour obtenir le résultat souhaité?


0 commentaires

3 Réponses :


3
votes

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 o (n) code>. P>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>


2 commentaires

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



2
votes

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);


1 commentaires

Je n'ai pas cherché la mise en œuvre, mais une fonction lib / lodash existante qui le fait.



1
votes

Il n'y a pas une seule fonction de lodash qui le fait, mais vous pouvez créer une fonction via _. flux () code> pour obtenir le résultat souhaité.

Vous pouvez convertir l'objet à un Tableau de tableaux contenant l'étiquette et les valeurs, _. Décompressez () code> à transposer, puis de mapper vers des objets à l'aide de _. ZipObject () code>: p>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>


0 commentaires