📅  最后修改于: 2023-12-03 15:42:23.946000             🧑  作者: Mango
这是一个使用 TypeScript 读取 CSV 文件并对其中的数据进行处理的示例。
首先需要安装一些必要的依赖,使用如下命令:
npm install papaparse
npm install @types/papaparse --save-dev
使用 papaparse 库可以方便地将 CSV 文件读取为 JavaScript 数组。在 TypeScript 中,我们需要在声明文件中定义 papaparse 的类型,上面的安装命令已经帮我们完成了这一步。
以下是使用 papaparse 读取 CSV 文件并输出到控制台的示例:
import * as Papa from 'papaparse';
import {readFileSync} from 'fs';
const fileData = readFileSync('./stdData.csv', 'utf8');
const results = Papa.parse(fileData);
if (results.errors.length > 0) {
console.error(results.errors);
} else {
console.log(results.data);
}
上述代码首先使用 readFileSync
函数读取 CSV 文件,然后将文件内容传递给 Papa.parse
函数。Papa.parse
函数返回一个对象,其中的 data
属性包含了 CSV 文件中的所有行数据。
对于上述读取的 CSV 文件,我们可以将其转换为 JSON 格式,并根据传感器类型进行分类。
以下是读取 CSV 文件并将其转化为 JSON 数组,并按传感器类型进行分类的示例代码:
interface SensorData {
sensorId: string;
timestamp: string;
value: number;
}
interface SensorType {
sensorId: string;
data: SensorData[];
}
const data: SensorData[] = results.data
.slice(1) // Skip header row
.map(([sensorId, timestamp, value]) => {
return {sensorId, timestamp, value: parseFloat(value)};
});
const sensorTypes: SensorType[] = data.reduce((types: SensorType[], d: SensorData) => {
const typeIndex = types.findIndex((t: SensorType) => t.sensorId === d.sensorId);
if (typeIndex === -1) {
types.push({sensorId: d.sensorId, data: [d]});
} else {
types[typeIndex].data.push(d);
}
return types;
}, []);
上述代码首先定义了两个接口,一个用于表示传感器的测量值(SensorData
),另一个用于表示传感器类型(SensorType
)。
接下来,我们通过对 results.data
数组的处理得到了一个 SensorData
类型的数组。然后,我们使用 reduce
函数将其按照传感器类型分组,得到一个 SensorType
类型的数组。
最后,我们可以将得到的结果输出到控制台或者进行其他处理。以下是一个简单的输出示例:
sensorTypes.forEach((type) => {
console.log(`Sensor type '${type.sensorId}':`);
type.data.forEach((d) => {
console.log(` - Timestamp: ${d.timestamp}, Value: ${d.value}`);
});
console.log();
});
上述代码将按传感器类型分类后的测量值输出到控制台,输出结果类似于下面的形式:
Sensor type 'sensor1':
- Timestamp: 2021-01-01 00:00:00, Value: 0.7593841578837258
- Timestamp: 2021-01-01 00:01:00, Value: 0.6090026127876839
...
Sensor type 'sensor2':
- Timestamp: 2021-01-01 00:00:00, Value: 0.1493696529785128
- Timestamp: 2021-01-01 00:01:00, Value: 0.7127725255001313
...
...