亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將文本文件垂直轉換為多維數組(不是逐行)

將文本文件垂直轉換為多維數組(不是逐行)

白板的微信 2023-11-02 16:36:13
我在名為 的變量中獲取了以下文本文件myText:file.txt:1,5,92,6,03,7,04,8,0myText = // content of file.txtmyText我想通過對每列中的元素進行分組來獲得一個如下所示的二維數組:my2DArray = [    [1, 2, 3, 4],    [5, 6, 7, 8],    [9, 0, 0, 0],]
查看完整描述

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));


查看完整回答
反對 回復 2023-11-02
?
交互式愛情

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)


查看完整回答
反對 回復 2023-11-02
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

您可以使用split,mapreduce

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);



查看完整回答
反對 回復 2023-11-02
  • 3 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號