javascript - 数组Javascript中的拆分和连接元素
问题描述
我有这样的流程映射和拆分:
var input = [{Sensor:"DHT11", Date:"28/05/2021", Time:"11:00:00", Data:"Humidity: 60.1, Temperature: 30.2"},
{Sensor:"Piezo", Date:"28/05/2021", Time:"11:00:10", Data:"Vibration level: 10"},
{Sensor:"PEM-004T", Date:"28/05/2021", Time:"11:00:20", Data:"Voltage: 220.3, Current: 0.13"},
{Sensor:"DHT11", Date:"28/05/2021", Time:"11:01:00", Data:"Humidity: 60.2, Temperature: 30.0"},
{Sensor:"Piezo", Date:"28/05/2021", Time:"11:01:10", Data:"Vibration level: 20"},
{Sensor:"PEM-004T", Date:"28/05/2021", Time:"11:01:20", Data:"Voltage: 220.5, Current: 0.16"}
]
const convert = (input) =>
Object.entries(
input
.flatMap(({ Data, Time }) =>
Data.split(", ").map((x, i) => ({
data: x,
time: Time,
}))
)
)
console.log(convert(input))
现在我想Data
在逗号分隔符上拆分键的值,生成一个新条目,该条目本身将在新的键/值对上拆分,同时保持每个结果条目的时间戳关联:
[
[ '0', { name: 'Humidity', data: 60.1', time: '11:00:00' } ],
[ '1', { name: 'Temperature', data: 30.2', time: '11:00:00' } ],
[ '2', { name: 'Vibration level', data: 10', time: '11:00:10' } ],
[ '3', { name: 'Voltage', data: 220.3', time: '11:00:20' } ],
[ '4', { name: 'Current', data: 0.13', time: '11:00:20' } ],
[ '5', { name: 'Humidity', data: 60.2', time: '11:01:00' } ],
[ '6', { name: 'Temperature', data: 30.0', time: '11:01:00' } ],
[ '7', { name: 'Vibration level', data: 20', time: '11:01:10' } ],
[ '8', { name: 'Voltage', data: 220.5', time: '11:01:20' } ],
[ '9', { name: 'Current', data: 0.16', time: '11:01:20' } ]
]
我怎样才能在功能上实现这一点?
解决方案
您需要将“x”数据拆分为所需的值
var input = [{Sensor:"DHT11", Date:"28/05/2021", Time:"11:00:00", Data:"Humidity: 60.1, Temperature: 30.2"},
{Sensor:"Piezo", Date:"28/05/2021", Time:"11:00:10", Data:"Vibration level: 10"},
{Sensor:"PEM-004T", Date:"28/05/2021", Time:"11:00:20", Data:"Voltage: 220.3, Current: 0.13"},
{Sensor:"DHT11", Date:"28/05/2021", Time:"11:01:00", Data:"Humidity: 60.2, Temperature: 30.0"},
{Sensor:"Piezo", Date:"28/05/2021", Time:"11:01:10", Data:"Vibration level: 20"},
{Sensor:"PEM-004T", Date:"28/05/2021", Time:"11:01:20", Data:"Voltage: 220.5, Current: 0.16"}
]
const convert = (input) =>
Object.entries(
input.flatMap(({ Data, Time }) =>
Data.split(", ").map((x, i) => {
const [nameval,dataval] = x.split(':');
return {
name: nameval,
data:dataval,
time: Time,
};
})
)
);
console.log(convert(input))
推荐阅读
- javascript - 如何使用 React.memo() 正确包装功能组件?仍然在每次重新渲染父组件时重新渲染
- android - 将 ImageView 对齐到右上角
- php - 执行 PUT 请求来更新整个项目或 DELETE + POST 会更好吗?
- apache - 使用 mod_lua (apache http 2.4) 获取 POST 请求正文并解码
- go - 如何在golang中解析命令行格式的字符串
- typescript - 如何指定点击回调?
- node.js - JetBrains WebStorm npm 模块自动完成功能不起作用
- java - ImportBeanDefinitionRegistrar 在自动配置期间创建的 bean 不适用于所有 bean 后处理器
- azure - Azure 自动化帐户 - Runbook 错误 - 对象引用未设置为对象的实例
- mysql - 使用“where”和“order by”子句为我的 sql 表创建索引以进行查询