首页 > 解决方案 > 数组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' } ]
]

我怎样才能在功能上实现这一点?

标签: javascriptarrayssplit

解决方案


您需要将“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))


推荐阅读