Saya seorang pemula JavaScript dan saya mencoba membuat dua array berbeda dengan nilai-nilai dari satu array utama.
Array utama saya terlihat seperti:
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 ]
Dan saya perlu membuat dua array, pertama terlihat seperti:
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]
(nilai pertama dan kedua)
dan kedua seperti:
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]
(nilai pertama dan ketiga)
Saya mencoba sambungan, filter dll. Tapi saya tidak tahu, bagaimana memulainya.
Tidak perlu menulis saya solusi yang tepat, tetapi hanya langkah bagaimana melakukannya.
javascript
arrays
Dominik Lev
sumber
sumber
Jawaban:
Anda bisa mengambil pendekatan dinamis dan mendapatkan semua item dari array setelah nilai kunci untuk setiap array baru.
sumber
[first, second]
denganarray
dan Anda mendapatkan array dengan semua kolom data sebagai array.r[i] = r[i] || []
Anda hanya harus menggunakanArray.from({length: (data[0]?.length ?? 1) - 1}, () => [])
untuk nilai akumulator awalr[i]
ada di setiap pengulangan, sedangkan Anda cukup membuat array hasil yang diperlukan di luarreduce
panggilan.Anda dapat menggunakannya
.map()
untuk beralih pada data Anda dan menggunakan beberapa Array Destrukturisasi untuk mendapatkan hasil yang diinginkan:sumber
([year, ...values]) => [year, values[n]]
Anda dapat menggunakannya
Array.prototype.forEach
untuk beralih pada item array asli, lalu membuat item baru dan mendorongnya ke dalam array baru:Keluaran:
Membuat array kami secara dinamis sehingga solusinya bekerja tidak peduli berapa banyak item yang dimiliki array asli:
Keluaran:
sumber
Pertama-tama, Anda memiliki array array di awal. Anda bisa
map
menggunakan array ini untuk dua array berbedadestructuring
untuk mendapatkan masing-masing nilai dari subarrays secara ringkas:sumber
Ulangi array utama dan kembalikan array baru dengan menggunakan nilai indeks tetap untuk mengakses nilai array anak Anda.
sumber
Anda dapat menggunakan pengurangan fungsi sebagai berikut yang hanya dilakukan sekali:
sumber
Ini dia
sumber
Saya telah menggunakan peta untuk loop, dua array untuk mendorong nilai yang dibutuhkan.
sumber
solusi lain:
sumber
Untuk solusi generik, saya pikir membangun array indeks untuk kolom nilai memberi Anda cara sederhana memetakan data lengkap ke array yang Anda inginkan.
memberi Anda array indeks, minus satu kolom pada tahun itu, dan
memberi Anda array yang Anda inginkan untuk kolom nilai ke-n. Begitu:
sumber
Solusi lain untuk array input dengan panjang generik.
sumber
Gunakan solusi ini untuk membuat kombinasi generik dari array multi dimensi yang ada. Anda harus melewati indeks item untuk dipilih secara eksplisit dan itulah yang membuatnya generik.
sumber