Jestem początkującym w JavaScript i próbuję utworzyć dwie różne tablice z wartościami z jednej głównej tablicy.
Moja główna tablica wygląda następująco:
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 ]
I muszę utworzyć dwie tablice, najpierw wyglądające jak:
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]
(pierwsza i druga wartość)
a po drugie:
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]
(pierwsza i trzecia wartość)
Próbuję splicować, filtrować itp., Ale nie wiem, jak zacząć.
Nie jest konieczne napisanie mi dokładnego rozwiązania, a jedynie kroki, jak to zrobić.
javascript
arrays
Dominik Lev
źródło
źródło
Odpowiedzi:
Możesz zastosować podejście dynamiczne i uzyskać wszystkie elementy tablicy po wartości klucza dla każdej nowej tablicy.
źródło
[first, second]
zarray
i masz tablice ze wszystkimi kolumnami danych, jak tablice.r[i] = r[i] || []
należy użyćArray.from({length: (data[0]?.length ?? 1) - 1}, () => [])
początkowej wartości akumulatorar[i]
istnieje w każdej iteracji pętli, podczas gdy możesz po prostu utworzyć niezbędne tablice wyników pozareduce
wywołaniem.Możesz użyć
.map()
do iteracji swoich danych i użyć Destrukturyzacji tablicy, aby uzyskać pożądane dane wyjściowe:źródło
([year, ...values]) => [year, values[n]]
Możesz użyć
Array.prototype.forEach
do iteracji elementów oryginalnej tablicy, a następnie utwórz nowe elementy i wepchnij je do nowych tablic:Wynik:
Dynamiczne generowanie naszych tablic, dzięki czemu rozwiązanie działa bez względu na liczbę elementów oryginalnych tablic:
Wynik:
źródło
Przede wszystkim macie tablicę na początku. Możesz ustawić
map
tę tablicę na dwie różne tablice, używającdestructuring
w zwięzły sposób każdej wartości z podrzędnych:źródło
Zapętlaj główną tablicę i zwróć nową tablicę, używając stałych wartości indeksu, aby uzyskać dostęp do wartości tablic podrzędnych.
źródło
Możesz użyć funkcji zmniejsz w następujący sposób, która iteruje tylko raz:
źródło
Proszę bardzo
źródło
Użyłem map for loop, dwóch tablic do wypchnięcia potrzebnych wartości.
źródło
inne rozwiązanie :
źródło
Jeśli chodzi o ogólne rozwiązanie, myślę, że budowanie tablicy indeksów dla kolumn wartości daje prosty sposób mapowania pełnych danych na pożądane tablice.
daje tablicę indeksów minus jedna kolumna, która była rokiem, i
daje tablicę, którą chcesz dla kolumny n-tej wartości. Więc:
źródło
Inne rozwiązanie dla tablic wejściowych o ogólnej długości.
źródło
Skorzystaj z tego rozwiązania, aby wykonać dowolną ogólną kombinację z istniejącej macierzy wielowymiarowej. Musisz jawnie przekazać indeks przedmiotów do wybrania, a to czyni go ogólnym.
źródło