为了账号安全,请及时绑定邮箱和手机立即绑定

将文本文件垂直转换为多维数组(不是逐行)

将文本文件垂直转换为多维数组(不是逐行)

白板的微信 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 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信