【前端】读取csv文件,将数据转换为对象。spilce与slice的区别

一. 解决思路

解决思路:将csv文件的第一行作为key,后续的每一行作为value存入对象数组。
在这里插入图片描述

二. 代码写法

2 .1 JS写法

2.1.1 数组.map(function(item, index,arr){})

Item: 这个表示的是每一项对应的索引。
index: 这个表示的是每一项对应的索引。
arr: 原数组。

2.1.2 数组.splice() 与 数组.slice() 的区别

数组.splice() : 有两个作用,第一个是截取原数组中的数据;第二个是删除并插入数据。
数组.slice() : 将截取出来的数据,放入一个新的数组。
最本质的区别在于这个方法会改变原数组。

数组.splice(start,amount) //截取数据,改变原数组 start是开始索引,amount是截取个数 改变原数组,被截取的数据被删除

//截取数据,改变原数组 start是开始索引,amount是截取个数,后面的item1,item2…是要加入原数组的数据
数组.splice(start,amount,item1,item2…) 

数组.slice(start,end)  //截取数据,不改变原数组,start是开始索引,end是结束索引

splice方法的结果
slice方法的结果

fetch('./Medical.csv').then(response => response.text()).then(csvString => {
    //将换行符作为分割符,拆分数据,读取每一行的数据
    const rows = csvString.split('\n');
    //继续拆分每一行,拆分成每一个数据(将csv文件读取为二维数组)
    const data = rows.map(row => row.split(','));
    console.log(data);
    results = [];
    //生成对象数组
    for(var i =1;i<data.length;i++){
        var result = {};
        //将每一行数组保存成一个对象
        for(var j=0;j<data[0].length;j++){
            result[data[0][j]]=data[i][j];
        }
        //深拷贝与浅拷贝的区别--深入研究一下
        results.push(JSON.parse(JSON.stringify(result)));
    }
    console.log(results);
});

2.2 python写法

for i in range(1,len(data_array)):
    #这个zfill()是填充字符串成5位字符串
    id = str(i).zfill(5)    
    exp_data = {}
    for j in range(0,len(data_array[0])) :
        exp_data[data_array[0][j]] = data_array[i][j]
    exp_data["id"] = id
    results.append(exp_data)
### 使用Matlab将NetCDF风场数据转换为MIKE DFS2文件 为了实现这一目标,可以采用以下几种工具和技术: #### 准备工作 安装必要的MATLAB工具箱,包括Mapping Toolbox和Climate Data Analysis Tools (CDT)[^1]。 #### 数据读取 利用`ncread`函数来加载NetCDF格式的数据。此命令可以从指定路径下的NetCDF文件中提取变量并将其存储到MATLAB的工作区中[^2]。 ```matlab filename = 'wind_data.nc'; lat = ncread(filename, 'latitude'); lon = ncread(filename, 'longitude'); time = ncread(filename, 'time'); u_wind = ncread(filename, 'u_component_of_wind'); % 东向分量 v_wind = ncread(filename, 'v_component_of_wind'); % 北向分量 ``` #### 处理时间序列 由于时间和空间维度可能不同步,在处理之前需确保所有的时间戳都是一致的。如果必要的话,可以通过插值或其他方式调整这些数组以匹配相同的时间间隔[^3]。 #### 创建DFS2对象 通过调用DHI MIKE SDK中的API创建一个新的空白DFS2文件实例,并设置其属性如地理位置、网格大小等参数。这一步骤通常涉及到定义地理坐标系以及设定输出的空间分辨率[^4]。 ```matlab % 假设已经下载并配置好了MIKE MATLAB API环境 dfsFile = dfs.create('output.dfs2', ... 'ProjectionString', projstr, ... 'X0Y0Z0', [min(lon), min(lat)], ... 'dxdydz', [(max(lon)-min(lon))/length(lon),... (max(lat)-min(lat))/length(lat)]); ``` #### 写入数据至DFS2文件 最后一步就是把经过预处理后的U,V两个方向上的速度分量写入到刚刚建立好的DFS2结构体里去。这里需要注意的是,因为DFS2是一种二进制格式,所以要按照特定顺序排列好各个要素再保存下来[^5]。 ```matlab for t=1:length(time) u_slice = squeeze(u_wind(:,:,t)); v_slice = squeeze(v_wind(:,:,t)); itemData{1} = reshape(u_slice.', [], 1); itemData{2} = reshape(v_slice.', [], 1); dfs.writeItemTimeStepNext(t-1, time(t), itemData); end dfs.close(); ``` 上述过程展示了如何借助MATLAB脚本完成从NetCDF到DFS2格式之间的转换操作。当然实际应用当中还需要考虑更多细节问题比如异常情况处理等等[^6]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值