Saya memiliki file teks berikut yang saya ambil dalam variabel bernama myText:

file.txt:
1,5,9
2,6,0
3,7,0
4,8,0

myText = // content of file.txt

Saya ingin mendapatkan array dua dimensi yang terlihat seperti ini dari myText dengan mengelompokkan elemen di setiap kolom:

my2DArray = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 0, 0, 0],
]
1
Anis Benna 10 Desember 2020, 23:30

3 jawaban

Jawaban Terbaik

Dengan asumsi bahwa semua baris memiliki jumlah elemen yang sama, pertama-tama Anda dapat membuat larik angka dua dimensi dari teks dan kemudian menggunakan Array.from untuk mendapatkan elemen di setiap kolom.

let myText = `1,5,9
2,6,0
3,7,0
4,8,0`;
const parts = myText.split('\n').map(x => x.split(',').map(Number));
const res = Array.from({length: parts[0].length}, 
   (_,i)=>Array.from({length: parts.length}, (_,j)=>parts[j][i]));
console.log(JSON.stringify(res));
2
Unmitigated 10 Desember 2020, 20:40

Ini adalah versi yang lebih dioptimalkan (sedikit lebih cepat) dengan lebih sedikit iterasi.

const myText = 
`1,5,9   
2,6,0
3,7,0
4,8,0`;

const rows = myText.split('\n');
const result = [];
for (let i = 0; i < rows.length; i++) {
    const row = rows[i].split(',');
    for (let j = 0; j < row.length; j++) {
        if (result[j] === undefined) {
            result[j] = [parseInt(row[j])]
        } else {
            result[j].push(parseInt(row[j]))
        }
    }
}
console.log(result)
1
kyziur 10 Desember 2020, 21:36