3 回答

TA貢獻1803條經驗 獲得超3個贊
假設所有行具有相同數量的元素,您可以首先從文本構造一個二維數字數組,然后使用Array.from獲取每列中的元素。
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));

TA貢獻1712條經驗 獲得超3個贊
這是一個更優化的版本(更快一點),迭代次數更少。
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)

TA貢獻1815條經驗 獲得超13個贊
您可以使用split
,map
和reduce
:
const myText = `1,5,9
2,6,0
3,7,0
4,8,0`;
const my2DArray = myText
? ? ? ? ? ? ? ? ? ?.split('\n')
? ? ? ? ? ? ? ? ? ?.map(row => row.split(',').map(Number)) // Reversed 2D Array
? ? ? ? ? ? ? ? ? ?.reduce((acc, row) => {
? ? ? ? ? ? ? ? ? ? ?if (acc.length) {
? ? ? ? ? ? ? ? ? ? ? ?return acc.map((r, i) => r.concat(row[i]));
? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ?return row.map(v => [v]);
? ? ? ? ? ? ? ? ? ?}, []); // Rotated matrix
? ? ? ? ? ? ? ? ?
console.log(my2DArray);
添加回答
舉報