Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用年连字符javascript格式化每个月5年的数据_Javascript - Fatal编程技术网

使用年连字符javascript格式化每个月5年的数据

使用年连字符javascript格式化每个月5年的数据,javascript,Javascript,我有这样的数据 [ { "camera_name": "Bolands Mills Arup", "exid": "bolands-mills-arup", "latest_snapshot_date": "2019-05-30T07:06:55+01:00", "oldest_snapshot_date": "2015-12-24T23:33:23+00:00", "years": { "2015": [ "12"

我有这样的数据

[  {
    "camera_name": "Bolands Mills Arup",
    "exid": "bolands-mills-arup",
    "latest_snapshot_date": "2019-05-30T07:06:55+01:00",
    "oldest_snapshot_date": "2015-12-24T23:33:23+00:00",
    "years": {
      "2015": [
        "12"
      ],
      "2016": [
        "04",
        "08",
        "09",
        "10",
        "02",
        "06",
        "03",
        "11",
        "12",
        "01",
        "07",
        "05"
      ],
      "2017": [
        "04",
        "07",
        "10",
        "09",
        "11",
        "01",
        "02",
        "03",
        "05",
        "06",
        "08",
        "11",
        "12"
      ],
      "2018": [
        "03",
        "05",
        "06",
        "10",
        "11",
        "01",
        "02",
        "08",
        "09",
        "04",
        "07",
        "11",
        "12"
      ],
      "2019": [
        "01",
        "02",
        "03",
        "04",
        "05"
      ]
    }
  },
  {
    "camera_name": "Walls Demo",
    "exid": "central-bank-fusion",
    "latest_snapshot_date": "2019-05-30T07:07:02+01:00",
    "oldest_snapshot_date": "2015-11-08T16:30:48+00:00",
    "years": {
      "2015": [
        "12",
        "11"
      ],
      "2016": [
        "02",
        "03",
        "05"
      ],
      "2017": [
        "03",
        "08",
        "10",
        "02",
        "04",
        "05",
        "06",
        "07",
        "09",
        "11",
        "01",
        "11",
        "12"
      ],
      "2018": [
        "03",
        "04",
        "07",
        "09",
        "01",
        "02",
        "08",
        "10",
        "11",
        "05",
        "06",
        "11",
        "12"
      ],
      "2019": [
        "01",
        "02",
        "03",
        "04",
        "05"
      ]
    }
  }
]
起初,我试图用年份值格式化这些数据,结果就是这样

[
  {
    "camera_name": "Bolands Mills Arup",
    "exid": "bolands-mills-arup",
    "latest_snapshot_date": "2019-05-30T07:06:55+01:00",
    "oldest_snapshot_date": "2015-12-24T23:33:23+00:00",
    "oct": 1,
    "nov": 1,
    "dec": 1,
    "jan": 1,
    "feb": 1,
    "mar": 1,
    "apr": 1,
    "may": 1,
    "jun": 1,
    "jul": 1,
    "aug": 1,
    "sep": 1
  },
  {
    "camera_name": "Walls Demo",
    "exid": "central-bank-fusion",
    "latest_snapshot_date": "2019-05-30T07:07:02+01:00",
    "oldest_snapshot_date": "2015-11-08T16:30:48+00:00",
    "oct": 0,
    "nov": 0,
    "dec": 0,
    "jan": 0,
    "feb": 1,
    "mar": 1,
    "apr": 0,
    "may": 1,
    "jun": 0,
    "jul": 0,
    "aug": 0,
    "sep": 0
  }
]
这是当用户仅选择一年时,例如2016年。然后会产生上面的结果,现在我正试图表述这些数据,比如

{
    "camera_name": "Walls Demo",
    "exid": "central-bank-fusion",
    "latest_snapshot_date": "2019-05-30T07:07:02+01:00",
    "oldest_snapshot_date": "2015-11-08T16:30:48+00:00",
    "2015-jan": 0,
    "2015-feb": 0,
    ....
    "2015-nov": 1,
    "2015-dec": 1,
    "2016-jan": 0,
    "2016-feb": 1,
    so on ...
  }
在5年的12个月内,大约有60列

这是我用来制作数据的方法,如第二种模式所示

formatDataWithYear(cameras) {
  let months_chars = {
    "01":"jan", 
    "02":"feb", 
    "03":"mar",
    "04":"apr",
    "05":"may",
    "06":"jun",
    "07":"jul",
    "08":"aug",
    "09":"sep",
    "10":"oct",
    "11":"nov",
    "12":"dec"
  }
  let year = this.year;
  var obj = cameras.map(({years, ...obj}) => {
    var months = years[year]
    for(var i in months_chars) {
      months.includes(i) ? obj[months_chars[i]] = 1 : obj[months_chars[i]] = 0
    }
    return obj
  });
  return obj;
}

要包含所有年份,您可以运行一个附加循环,如下所示:

  var obj = cameras.map(({years, ...obj}) => {
      for(var year in years) {
          var months = years[year];
          for(var i in months_chars) {
              months.includes(i) ? obj[year + "-" + months_chars[i]] = 1 : obj[year + "-" + months_chars[i]] = 0
          }
      }
      return obj;
  });

要包含所有年份,您可以运行一个附加循环,如下所示:

  var obj = cameras.map(({years, ...obj}) => {
      for(var year in years) {
          var months = years[year];
          for(var i in months_chars) {
              months.includes(i) ? obj[year + "-" + months_chars[i]] = 1 : obj[year + "-" + months_chars[i]] = 0
          }
      }
      return obj;
  });

使用
Object.entries
将帮助我们更轻松地映射值:

const摄像机=[{
“摄像机名称”:“博兰磨坊奥雅纳”,
“exid”:“博兰磨坊奥雅纳”,
“最新快照日期”:“2019-05-30T07:06:55+01:00”,
“最早的快照日期”:“2015-12-24T23:33:23+00:00”,
“年”:{
"2015": [
"12"
],
"2016": [
"04",
"08",
"09",
"10",
"02",
"06",
"03",
"11",
"12",
"01",
"07",
"05"
],
"2017": [
"04",
"07",
"10",
"09",
"11",
"01",
"02",
"03",
"05",
"06",
"08",
"11",
"12"
],
"2018": [
"03",
"05",
"06",
"10",
"11",
"01",
"02",
"08",
"09",
"04",
"07",
"11",
"12"
],
"2019": [
"01",
"02",
"03",
"04",
"05"
]
}
},
{
“摄像机名称”:“墙壁演示”,
“进出口银行”:“中央银行融合”,
“最新快照日期”:“2019-05-30T07:07:02+01:00”,
“最早的快照日期”:“2015-11-08T16:30:48+00:00”,
“年”:{
"2015": [
"12",
"11"
],
"2016": [
"02",
"03",
"05"
],
"2017": [
"03",
"08",
"10",
"02",
"04",
"05",
"06",
"07",
"09",
"11",
"01",
"11",
"12"
],
"2018": [
"03",
"04",
"07",
"09",
"01",
"02",
"08",
"10",
"11",
"05",
"06",
"11",
"12"
],
"2019": [
"01",
"02",
"03",
"04",
"05"
]
}
}
]
让月_chars={
“01”:“jan”,
“02”:“二月”,
“03”:“三月”,
“04”:“4月”,
“05”:“五月”,
“06”:“六月”,
“07”:“七月”,
“08”:“8月”,
“09”:“9月”,
“10”:“10月”,
“11”:“11月”,
“12”:“12月”
}
//在阵列中的每个摄影机对象上进行贴图,
//然后解构这个物体,给我们时间,还有这个物体的其他部分。
var obj=cameras.map({years,…obj})=>{
//在years对象的每个条目上循环,
//并将数组解构为键/值对:
//例如[年、月]=>2016年[01,02,03]等
Object.entries(年).forEach([年,月])=>{
//然后循环遍历months_chars对象中的每个条目,
//并将数组解构为另一个键/值对:
//例如[关键,月份]=>01,“一月”
Object.entries(months\u chars).forEach([key,month])=>{
//检查早期的月份值是否具有指定的月份,
//并相应地将对象的值设置为1或0
obj[`{year}-${month}`]=月。包括(键)?1:0
})
})
返回obj
})

console.log(obj)
使用
对象。条目将帮助我们更容易地映射值:

const摄像机=[{
“摄像机名称”:“博兰磨坊奥雅纳”,
“exid”:“博兰磨坊奥雅纳”,
“最新快照日期”:“2019-05-30T07:06:55+01:00”,
“最早的快照日期”:“2015-12-24T23:33:23+00:00”,
“年”:{
"2015": [
"12"
],
"2016": [
"04",
"08",
"09",
"10",
"02",
"06",
"03",
"11",
"12",
"01",
"07",
"05"
],
"2017": [
"04",
"07",
"10",
"09",
"11",
"01",
"02",
"03",
"05",
"06",
"08",
"11",
"12"
],
"2018": [
"03",
"05",
"06",
"10",
"11",
"01",
"02",
"08",
"09",
"04",
"07",
"11",
"12"
],
"2019": [
"01",
"02",
"03",
"04",
"05"
]
}
},
{
“摄像机名称”:“墙壁演示”,
“进出口银行”:“中央银行融合”,
“最新快照日期”:“2019-05-30T07:07:02+01:00”,
“最早的快照日期”:“2015-11-08T16:30:48+00:00”,
“年”:{
"2015": [
"12",
"11"
],
"2016": [
"02",
"03",
"05"
],
"2017": [
"03",
"08",
"10",
"02",
"04",
"05",
"06",
"07",
"09",
"11",
"01",
"11",
"12"
],
"2018": [
"03",
"04",
"07",
"09",
"01",
"02",
"08",
"10",
"11",
"05",
"06",
"11",
"12"
],
"2019": [
"01",
"02",
"03",
"04",
"05"
]
}
}
]
让月_chars={
“01”:“jan”,
“02”:“二月”,
“03”:“三月”,
“04”:“4月”,
“05”:“五月”,
“06”:“六月”,
“07”:“七月”,
“08”:“8月”,
“09”:“9月”,
“10”:“10月”,
“11”:“11月”,
“12”:“12月”
}
//在阵列中的每个摄影机对象上进行贴图,
//然后解构这个物体,给我们时间,还有这个物体的其他部分。
var obj=cameras.map({years,…obj})=>{
//在years对象的每个条目上循环,
//并将数组解构为键/值对: