Soy un principiante de JavaScript y estoy tratando de hacer dos matrices diferentes con valores de una matriz principal.
Mi matriz principal se ve así:
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 ]
Y necesito crear dos matrices, primero como:
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]
(primer y segundo valor)
y segundo como:
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]
(primer y tercer valor)
Intento empalmar, filtrar, etc. pero no sé cómo comenzar.
No es necesario que me escriba una solución exacta, pero solo explica cómo hacerlo.
javascript
arrays
Dominik Lev
fuente
fuente
Respuestas:
Podría adoptar un enfoque dinámico y obtener todos los elementos de la matriz después del valor clave para cada nueva matriz.
fuente
[first, second]
conarray
y obtendrá matrices con todas las columnas de los datos como matrices.r[i] = r[i] || []
, solo debe usarloArray.from({length: (data[0]?.length ?? 1) - 1}, () => [])
para el valor inicial del acumuladorr[i]
existe en cada iteración de bucle, mientras que simplemente podría crear las matrices de resultados necesarias fuera de lareduce
llamada.Puede usar
.map()
para iterar sobre sus datos y usar algo de Destrucción de matriz para obtener la salida deseada:fuente
([year, ...values]) => [year, values[n]]
Puede usar
Array.prototype.forEach
para iterar sobre los elementos de la matriz original, luego crear los nuevos elementos e insertarlos en nuevas matrices:Salida:
Generando nuestras matrices dinámicamente para que la solución funcione sin importar cuántos elementos tengan las matrices originales:
Salida:
fuente
En primer lugar, tiene una matriz de matrices al principio. Puede
map
usar esta matriz en dos matrices diferentesdestructuring
para obtener cada valor de las submatrices de manera concisa:fuente
Recorra la matriz principal y devuelva una nueva matriz utilizando valores de índice fijos para acceder a los valores de sus matrices secundarias.
fuente
Puede usar la función reducir como sigue, que itera solo una vez:
fuente
Aqui tienes
fuente
He usado map for loop, dos matrices para empujar los valores necesarios.
fuente
otra solución :
fuente
Para la solución genérica, creo que construir una matriz de índices para las columnas de valor le brinda una forma simple de asignar los datos completos a las matrices que desea.
le brinda una variedad de índices, menos la columna que fue el año, y
le da la matriz que desea para la enésima columna de valor. Entonces:
fuente
Otra solución para matrices de entrada de longitud genérica.
fuente
Use esta solución para hacer cualquier combinación genérica a partir de una matriz multidimensional existente. Tienes que pasar el índice de elementos para elegir explícitamente y eso es lo que lo hace genérico.
fuente