我有这种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"
]
}
}
]
我有一个名称为year的参数,其值可以是2015到2019。我正在尝试做的是创建一个将这些数据与year和month值组合在一起的方法。
我的月度模式为
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}`]
});
此外,我无法按要求设置数据格式。
答案 0 :(得分:0)
这应该有效。使用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)