标签:ecmascript-6 reactjs momentjs javascript
我如何从这个数组转换
[
{
"date_from": "2017-05-06 00:00:00",
"date_to": "2017-05-08 23:59:59",
"event": "code jam"
},
{
"date_from": "2017-05-03 00:00:00",
"date_to": "2017-05-07 23:59:59",
"event": "boxing day"
}
]
对此吗?
[
..
..
{date: '2017-05-06', state:{name:'San francisco'}},
{date: '2017-05-07', state:{name:'San francisco'}},
{date: '2017-05-08', state:{name:'San francisco'}},
..
..
]
我不知道从哪里开始.我获得了无法更改其结构的API,我需要将数据包含在日期范围的列表中,以便可以使用日历插件进行映射.需要帮忙.
解决方法:
首先,遍历事件,然后循环遍历事件日期并在这些日期存储事件:
var output=input.reduce(function(obj,event){
for(var day=Math.floor(+new Date(event.date_from)/(1000*60*60*24)+1),max=Math.floor(+new Date(event.date_to)/(1000*60*60*24));day<=max;day++){
(obj[day]=obj[day]||[]).push(event);
}
return obj;
},{});
然后从该对象创建一个数组(并缩短日期):
Date.prototype.format=function(str){
var map={
dd:this.getDate(),
mm:this.getMonth()+1,
yyyy:this.getFullYear()
}
return str.split("-").map(el=>map[el]||"00").join("-");
}
var arr=[];
for(key in output){
arr.push({date:new Date(key*1000*60*60*24).format("dd-mm-yyyy"),events:output[key]});
}
console.log(arr);
http://jsbin.com/jonaqefaxu/edit?console
标签:ecmascript-6,reactjs,momentjs,javascript 来源: https://codeday.me/bug/20191111/2019599.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。