In case if dates in the array are intersect then function should combine them in one period, else periods should be separated
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" } ]
Output: Mar 1-5, 7-20
Can some help? Learning JS…little bit hard for me(
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)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.