将JSON数据转换为新的JSON输出

时间:2019-07-04 22:37:39

标签: javascript json timestamp

我正在尝试根据这些约束编写脚本以输出JSON。 到目前为止,我认为我的逻辑是正确的。

感谢您的帮助。

当前问题:

  • [立即工作]我不知道为什么持续时间继续返回0
  • [立即工作]如何解决设置max/min
  • 解决两个不同类型的游览背靠背发生时的处理方法(“热”⇒“冷”或“冷”⇒“热”)

这是每个新对象应该出现的方式

  let current_excursion = {
      'device_sensor' : '',
      'start_at' : [],
      'stop_at' : 0,
      'duration' : 0,
      'type': '',
      'max/min':0
}

device_sensor sId上发现了这次旅行。

开始于 温度最先出现的日期和时间超出ISO_8601 format中的范围。

stop_at 温度的日期和时间重新回到ISO_8601 format的范围内。

持续时间 温度超出范围的总时间(以秒为单位)。

类型 字符串“ hot”或“ cold”取决于游览的类型。

最大/最小 漂移的极端温度。对于“热”偏移,这将是最大值;对于“冷”偏移,这将是最小值。

温度漂移事件开始 当温度超出范围并在温度恢复时结束 到范围。 对于“热”偏移,这是指温度高于8°C, 对于“冷”偏移,这是指温度低于2°C的情况。  如果两次出现不同类型的旅行  (“热”⇒“冷”或“冷”⇒“热”)请取两者的中点 时间戳记为第一次游览的结束和第二次游览的开始。

如果温度读数结束时发生偏移  请在最后一次阅读时结束游览(持续时间= 0)

这是测试数据的链接 Test Case Data

这是我到目前为止所写的内容:

const tempTypeTernary = (num) =>{
    if(num < 2){
      return 'cold'
    } else if(num > 8){
      return 'hot'
    }
}

const excursion_duration = (x,y) =>{
  let start = new Date(x) / 1000
  let end =  new Date(y) / 1000

  return end - start
}

const reset_excursion = (obj) => {
  Object.keys(obj).map(key => {
    if (obj[key] instanceof Array) obj[key] = []
    else obj[key] = ''
  })
}


const list_excursion = (array) =>{

  let result = [];
  let max_min_excursion = 0;
  let current_excursion = {
      'device_sensor' : '',
      'start_at' : [],
      'stop_at' : 0,
      'duration' : 0,
      'type': '',
      'max/min':0
}

  for(let k = 0; k < array.length;k++){

    if( array[k]['tmp'] < 2 || array[k]['tmp'] > 8){

      current_excursion['device_sensor'] = array[k]['sId'];
      current_excursion['start_at'] = [new Date(array[k]['time']).toISOString(),array[k]['time']];
      current_excursion['type'] =  tempTypeTernary(array[k]['tmp']);

      if( array[k]['tmp'] > 2 || array[k]['tmp'] < 8){
        current_excursion['stop_at'] = new Date(array[k]['time']).toISOString();
        current_excursion['duration'] = excursion_duration(current_excursion['start_at'][1],array[k]['time'])
          }
          result.push(current_excursion)
          reset_excursion(current_excursion)
      }


  }
  return result
}

list_excursion(json)

1 个答案:

答案 0 :(得分:0)

让我大胆尝试一下,只看一下代码就可以回答。请尝试以下方法:

4, 5, 6, 7