Je suis un débutant JavaScript et j'essaie de créer deux tableaux différents avec des valeurs à partir d'un tableau principal.
Mon tableau principal ressemble à:
0: Array(3) [ 2011, 127072.7, 51584 ]
1: Array(3) [ 2012, 125920.3, 59974 ]
2: Array(3) [ 2013, 129305.4, 15468 ]
3: Array(3) [ 2014, 135364, 84554 ]
4: Array(3) [ 2015, 136757, 98754 ]
5: Array(3) [ 2016, 155653.5, 155548 ]
6: Array(3) [ 2017, 164130.5, 284848 ]
Et j'ai besoin de créer deux tableaux, ressemblant d'abord à:
0: Array(2) [ 2011, 127072.7]
1: Array(2) [ 2012, 125920.3]
2: Array(2) [ 2013, 129305.4]
3: Array(2) [ 2014, 135364]
4: Array(2) [ 2015, 136757]
5: Array(2) [ 2016, 155653.5]
6: Array(2) [ 2017, 164130.5]
(première et deuxième valeur)
et deuxième comme:
0: Array(2) [ 2011, 51584]
1: Array(2) [ 2012, 59974]
2: Array(2) [ 2013, 15468]
3: Array(2) [ 2014, 84554]
4: Array(2) [ 2015, 98754]
5: Array(2) [ 2016, 155548]
6: Array(2) [ 2017, 284848]
(première et troisième valeur)
J'essaie d'épissure, de filtrage, etc. mais je ne sais pas par où commencer.
Il n'est pas nécessaire de m'écrire une solution exacte, mais seulement des étapes pour le faire.
javascript
arrays
Dominik Lev
la source
la source
Réponses:
Vous pouvez adopter une approche dynamique et obtenir tous les éléments du tableau après la valeur de clé pour chaque nouveau tableau.
la source
[first, second]
pararray
et vous obtenez des tableaux avec toutes les colonnes des données sous forme de tableaux.r[i] = r[i] || []
vous devez simplement utiliserArray.from({length: (data[0]?.length ?? 1) - 1}, () => [])
la valeur initiale de l'accumulateurr[i]
existe dans chaque itération de boucle, alors que vous pouvez simplement créer les tableaux de résultats nécessaires en dehors de l'reduce
appel.Vous pouvez utiliser
.map()
pour itérer sur vos données et utiliser une certaine restructuration de tableau pour obtenir la sortie souhaitée:la source
([year, ...values]) => [year, values[n]]
Vous pouvez utiliser
Array.prototype.forEach
pour parcourir les éléments du tableau d'origine, puis créer les nouveaux éléments et les pousser dans de nouveaux tableaux:Production:
Génération dynamique de nos tableaux afin que la solution fonctionne quel que soit le nombre d'éléments des tableaux d'origine:
Production:
la source
Tout d'abord, vous avez un tableau de tableaux au début. Vous pouvez
map
créer ce tableau dans deux tableaux différents en utilisantdestructuring
pour obtenir chaque valeur des sous- tableaux de manière concise:la source
Parcourez le tableau principal et renvoyez un nouveau tableau en utilisant des valeurs d'index fixes pour accéder aux valeurs de vos tableaux enfants.
la source
Vous pouvez utiliser la fonction réduire comme suit qui itère une seule fois:
la source
Voici
la source
J'ai utilisé map for loop, deux tableaux pour pousser les valeurs nécessaires.
la source
une autre solution :
la source
Pour la solution générique, je pense que la création d'un tableau d'index pour les colonnes de valeur vous donne un moyen simple de mapper les données complètes aux tableaux que vous souhaitez.
vous donne un tableau d'indices, moins la colonne qui était l'année, et
vous donne le tableau que vous voulez pour la nième colonne de valeur. Donc:
la source
Une autre solution pour les tableaux d'entrée de longueur générique.
la source
Utilisez cette solution pour créer n'importe quelle combinaison générique à partir d'un tableau multidimensionnel existant. Vous devez passer explicitement l'index des éléments à choisir et c'est ce qui le rend générique.
la source