Eu sou iniciante em JavaScript e estou tentando criar duas matrizes diferentes com valores de uma matriz principal.
Minha matriz principal se parece com:
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 ]
E eu preciso criar duas matrizes, primeiro parecendo:
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]
(primeiro e segundo valor)
e 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]
(primeiro e terceiro valor)
Estou tentando emendar, filtrar etc., mas não sei como começar.
Não é necessário me escrever uma solução exata, mas apenas as etapas de como fazê-lo.
javascript
arrays
Dominik Lev
fonte
fonte
Respostas:
Você pode adotar uma abordagem dinâmica e obter todos os itens da matriz após o valor da chave para cada nova matriz.
fonte
[first, second]
porarray
e obter matrizes com todas as colunas dos dados como matrizes.r[i] = r[i] || []
você deve usar apenasArray.from({length: (data[0]?.length ?? 1) - 1}, () => [])
o valor inicial do acumuladorr[i]
existe em cada iteração de loop, enquanto você pode simplesmente criar as matrizes de resultados necessárias fora dareduce
chamada.Você pode usar
.map()
para iterar sobre seus dados e usar alguma Reestruturação de Matriz para obter a saída desejada:fonte
([year, ...values]) => [year, values[n]]
Você pode usar
Array.prototype.forEach
para iterar sobre os itens da matriz original, criar os novos itens e enviá-los para novas matrizes:Resultado:
Gerando nossas matrizes dinamicamente para que a solução funcione, independentemente de quantos itens as matrizes originais tiverem:
Resultado:
fonte
Primeiro de tudo, você tem uma matriz de matrizes no início. Você pode
map
essa matriz para duas matrizes diferentes usandodestructuring
para obter cada valor das sub- matrizes de maneira concisa:fonte
Faça um loop na matriz principal e retorne uma nova matriz usando valores de índice fixos para acessar os valores das matrizes filho.
fonte
Você pode usar a função reduzir da seguinte maneira, que itera apenas uma vez:
fonte
Aqui está
fonte
Eu usei map for loop, duas matrizes para enviar os valores necessários.
fonte
outra solução:
fonte
Para a solução genérica, acho que a criação de uma matriz de índices para as colunas de valor oferece uma maneira simples de mapear os dados completos para as matrizes que você deseja.
fornece uma matriz de índices, menos a coluna que foi o ano e
fornece a matriz que você deseja para a coluna de enésimo valor. Assim:
fonte
Outra solução para matrizes de entrada de comprimento genérico.
fonte
Use esta solução para fazer qualquer combinação genérica da matriz multidimensional existente. Você precisa passar o índice de itens para escolher explicitamente e é isso que o torna genérico.
fonte