使用年份和飞蛾存在 JavaScript 格式化数据



>我有这种json对象

[  {
"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"
]
}
}
]

我有一个带有年份名称的参数,其值可以是 2015 到 2019。我正在尝试做的是创建一种方法,该方法将使用年和月值格式化此数据。

我有这个月份的模式,因为

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"
}

用户正在选择年份值,例如,如果用户选择 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",
"jan": 0,
"feb": 1,
"mar": 1,
"apr": 0,
"may", 1,
...
"dec": 0
}

如果月份存在,它将通过年份的现值,那么它将添加月份字符并将 1 放在前面,如果没有,那么仍然将月份放在前面,将 0 放在前面。

任何帮助将不胜感激,我已经走到了这一步,

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;
let formatedData =
data.map((camera) => {
let present_months = data["years"][`${year}`]
});

此外,我无法根据需要格式化数据。

这应该有效。使用 map() 遍历每个对象,遍历每个months_chars以检查年份是否包含键,如果为 true,则返回 1,如果为 false,则返回 0:

const cameras = [{
"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"
]
}
}
]
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"
}
var input = 2016
var obj = cameras.map(({years, ...obj}) => {
var months = years[input]
for(var i in months_chars) {
months.includes(i) ? obj[months_chars[i]] = 1 : obj[months_chars[i]] = 0
}
return obj

})
console.log(obj)

最新更新