使用年连字符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对象的每个条目上循环,
//并将数组解构为键/值对: