Javascript 重新格式化或将对象数组映射到新对象的新数组?就像重新格式化它一样

我对数组和对象很陌生,所以我一整天都在做这个任务,我有一个 JSON 文件或数组 lang (JavaScript),我也在 StackOverflow 上搜索,但不能很好地理解它们:


[

  { "date": "1959:01", this"1": 138.89, "2": 139.39, "3": 139.74, "4": 139.69, "5": 140.68, "6": 141.17 },

  { "date": "1959:07", "1": 141.7, "2": 141.9, "3": 141.01, "4": 140.47, "5": 140.38, "6": 139.95 },

  { "date": "1960:01", "1": 139.98, "2": 139.87, "3": 139.75, "4": 139.56, "5": 139.61, "6": 139.58 },

  { "date": "1960:07", "1": 140.18, "2": 141.31, "3": 141.18, "4": 140.92, "5": 140.86, "6": 140.69 },

  { "date": "1961:01", "1": 141.06, "2": 141.6, "3": 141.87, "4": 142.13, "5": 142.66, "6": 142.88 },

  { "date": "1961:07", "1": 142.92, "2": 143.49, "3": 143.78, "4": 144.14, "5": 144.76, "6": 145.2 },

  { "date": "1962:01", "1": 145.24, "2": 145.66, "3": 145.96, "4": 146.4, "5": 146.84, "6": 146.58 },

  { "date": "1962:07", "1": 146.46, "2": 146.57, "3": 146.3, "4": 146.71, "5": 147.29, "6": 147.82 },

  { "date": "1963:01", "1": 148.26, "2": 148.9, "3": 149.17, "4": 149.7, "5": 150.39, "6": 150.43 },

  { "date": "1963:07", "1": 151.34, "2": 151.78, "3": 151.98, "4": 152.55, "5": 153.65, "6": 153.29 },

  { "date": "1964:01", "1": 153.74, "2": 154.31, "3": 154.48, "4": 154.77, "5": 155.33, "6": 155.62 },

  { "date": "1964:07", "1": 156.8, "2": 157.82, "3": 158.75, "4": 159.24, "5": 159.96, "6": 160.3 },

  { "date": "1965:01", "1": 160.71, "2": 160.94, "3": 161.47, "4": 162.03, "5": 161.7, "6": 162.19 },

  { "date": "1965:07", "1": 163.05, "2": 163.68, "3": 164.85, "4": 165.97, "5": 166.71, "6": 167.85 },

  { "date": "1966:01", "1": 169.08, "2": 169.62, "3": 170.51, "4": 171.81, "5": 171.33, "6": 171.57 },

  { "date": "1966:07", "1": 170.31, "2": 170.81, "3": 171.97, "4": 171.16, "5": 171.38, "6": 172.03 }

]

这些就像公司在指定年数内的收入,例如 1959:01 年初,从 1 到 6 是该年的前 6 个月,同年 1956:07 但“:07”中的差异是值同年最后 6 个月(1 到 6)的数据,所以我想每个月输出如下,其中包含它的值和年份,请使用最容易理解的代码。


  [

  {

"year": 1996,

"month": 1,

"value": 88512.12

  },

  {

"year": 1996,

"month": 2,

"value": 71212.12

  },

 



暮色呼如
浏览 83回答 3
3回答

慕村225694

如果我正确理解你的问题,那么你可以这样做:const financialResults = [  { "date": "1959:01", "1": 138.89, "2": 139.39, "3": 139.74, "4": 139.69, "5": 140.68, "6": 141.17 },  { "date": "1959:07", "1": 141.7, "2": 141.9, "3": 141.01, "4": 140.47, "5": 140.38, "6": 139.95 },  { "date": "1960:01", "1": 139.98, "2": 139.87, "3": 139.75, "4": 139.56, "5": 139.61, "6": 139.58 },  { "date": "1960:07", "1": 140.18, "2": 141.31, "3": 141.18, "4": 140.92, "5": 140.86, "6": 140.69 },  { "date": "1961:01", "1": 141.06, "2": 141.6, "3": 141.87, "4": 142.13, "5": 142.66, "6": 142.88 },  { "date": "1961:07", "1": 142.92, "2": 143.49, "3": 143.78, "4": 144.14, "5": 144.76, "6": 145.2 },  { "date": "1962:01", "1": 145.24, "2": 145.66, "3": 145.96, "4": 146.4, "5": 146.84, "6": 146.58 },  { "date": "1962:07", "1": 146.46, "2": 146.57, "3": 146.3, "4": 146.71, "5": 147.29, "6": 147.82 },  { "date": "1963:01", "1": 148.26, "2": 148.9, "3": 149.17, "4": 149.7, "5": 150.39, "6": 150.43 },  { "date": "1963:07", "1": 151.34, "2": 151.78, "3": 151.98, "4": 152.55, "5": 153.65, "6": 153.29 },  { "date": "1964:01", "1": 153.74, "2": 154.31, "3": 154.48, "4": 154.77, "5": 155.33, "6": 155.62 },  { "date": "1964:07", "1": 156.8, "2": 157.82, "3": 158.75, "4": 159.24, "5": 159.96, "6": 160.3 },  { "date": "1965:01", "1": 160.71, "2": 160.94, "3": 161.47, "4": 162.03, "5": 161.7, "6": 162.19 },  { "date": "1965:07", "1": 163.05, "2": 163.68, "3": 164.85, "4": 165.97, "5": 166.71, "6": 167.85 },  { "date": "1966:01", "1": 169.08, "2": 169.62, "3": 170.51, "4": 171.81, "5": 171.33, "6": 171.57 },  { "date": "1966:07", "1": 170.31, "2": 170.81, "3": 171.97, "4": 171.16, "5": 171.38, "6": 172.03 }]// Extract semester and year: assign 2 if entry corresponds to second semester or 1 if it corresponds to the first// semester in the yearconst extractYearAndSemester = date => ({ year: date.split(":")[0], semester: date.split(":")[1] > 6 ? 2 : 1 })// For each entry, return an array of objects with the desired properties// Finally, flatten the array, so you don't end up with an array of arraysconst formatResults = arr => arr.  flatMap(entry => {  const { year, semester } = extractYearAndSemester(entry.date)  let semesterResults = []  for (let key in entry) {    if (parseInt(key)) {      semesterResults.push({        year,        month: semester === 1 ? parseInt(key) : parseInt(key) + 6,        value: entry[key]      })    }  }  return semesterResults  })console.log(formatResults(financialResults))

米脂

尝试循环遍历数据并解析每个记录的属性,如下所示。在外循环结束时,您将在 MonthData 变量中获得具有所需格式的数据;var data = [&nbsp; &nbsp; &nbsp; { "date": "1959:01", "1": 138.89, "2": 139.39, "3": 139.74, "4": 139.69, "5": 140.68, "6": 141.17 },&nbsp; &nbsp; &nbsp; { "date": "1959:07", "1": 141.7, "2": 141.9, "3": 141.01, "4": 140.47, "5": 140.38, "6": 139.95 },&nbsp; &nbsp; ];&nbsp; &nbsp; &nbsp;var monthData = [];&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; for (let index = 0; index < data.length; index++) {&nbsp; &nbsp; &nbsp; &nbsp; var item =data[index];&nbsp; &nbsp; &nbsp; &nbsp; var dateArray = item.date.split(":");&nbsp; &nbsp; &nbsp; &nbsp; var year = dateArray[0];&nbsp; &nbsp; &nbsp; &nbsp; var baseMonth = Number(dateArray[1]);&nbsp; &nbsp; &nbsp; &nbsp; for (var key in item) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (item.hasOwnProperty(key)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var val = item[key];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (String(val).indexOf(":")== -1) {&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; monthData.push({&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; year:year ,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; month:&nbsp; baseMonth-1 + Number(key),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value: val,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; }

慕工程0101907

阅读有关此软件包的信息,它将让您的生活更轻松:use of _map - Lodash
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript