简体   繁体   English

JSON 具有“from”和“to”属性的对象数组,并按时间段分组

[英]JSON array of objects with properties “from” and “to” and group it by time period

In case if dates in the array are intersect then function should combine them in one period, else periods should be separated如果数组中的日期相交,则 function 应将它们合并为一个时期,否则时期应分开

 var dates = [ { "from":"03/01/2021", "to":"03/05/2021" }, { "from":"03/08/2021", "to":"03/10/2021" }, { "from":"03/07/2021", "to":"03/20/2021" } ]; var item = dates; var index = 0; var out = document.querySelector('#test'); for(var i = 0; i < item.length; i++){ index++; var from_i = Date.parse(item[i].from); var to_i = Date.parse(item[i].to); var from_index = Date.parse(item[index].from); var to_index = Date.parse(item[index].to); if(from_index >= from_i && from_index <= to_i){ let updated_from = new Date(from_index); let update_to = new Date(to_index); console.log(updated_from); out.innerHTML += updated_from.toDateString() + update_to.toDateString() + "<br/>"; } }
 <div id="test"> </div>

Case of incoming jSON: [ { "from":"03/01/2021", "to":"03/06/2021" }, { "from":"03/10/2021", "to":"03/15/2021" }, { "from":"03/20/2021", "to":"03/25/2021" } ]传入案例 jSON: [ { "from":"03/01/2021", "to":"03/06/2021" }, { "from":"03/10/2021", "to":" 2021 年 3 月 15 日"},{"来自":"2021 年 3 月 20 日","到":"2021 年 3 月 25 日"}]

Output: Mar 1-5, 7-20 Output:3月1日至5日、7日至20日

Can some help?有什么帮助吗? Learning JS…little bit hard for me(学习 JS……对我来说有点难(

you can do something like this你可以这样做

 const data = [ { "from":"03/01/2021", "to":"03/06/2021" }, { "from":"03/10/2021", "to":"03/15/2021" }, { "from":"03/20/2021", "to":"03/25/2021" } ] const monthToString = month => { const months = { '01': 'Jan', '02': 'Feb', '03': 'Mar', '04': 'Apr', '05': 'May', '06': 'Jun', '07': 'Jul', '08': 'Aug', '09': 'Sep', '10': 'Oct', '11': 'Nov', '12': 'Dec', } return months[month] || month } const result = Object.entries(data.reduce((res, {from, to}) => { const [monthFrom, day, year] = from.split('/') const [m, dayTo, y] = to.split('/') const month = monthToString(m) return {...res, [month]: [...(res[month] || []), [day, dayTo]] } }, {})).map(([month, days]) => `${month} ${days.map(([from, to]) => `${parseInt(from)}-${parseInt(to)}`).join(', ')}`).join('\n') console.log(result)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM