Показать сообщение отдельно
  #3 (permalink)  
Старый 16.03.2018, 21:33
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,736

Вроде работает.
var shedule={
		'пн': '7:00-19:00',
		'вт': '9:00-19:00',
		'ср': '9:00-19:00',
		'чт': '9:00-19:00',
		'пт': '9:00-19:00',
		'сб': '10:00-15:00',
		'вс': '10:00-15:00'
	},
	__week_days=['пн','вт','ср','чт','пт','сб','вс'],
	response=Object.keys(shedule).map(function(day){
		return {
			day:day,
			worktime:shedule[day]
		};
	}).sort(function(a,b){
		return __week_days.indexOf(a.day)-__week_days.indexOf(b.day);
	}).reduce(function(res,item,index,list){
		var row={from:item.day,to:void 0,worktime:item.worktime};
		if(!res.length)
			return [row];
		
		if(res[res.length-1].worktime==item.worktime)
			res[res.length-1].to=item.day;
		else
			res.push(row);
			
		return res;
	},[]).reduce(function(res,item){
		res[item.from+(item.to?'-'+item.to:'')]=item.worktime;
		
		return res;
	},{});
	
console.log(response);
Ответить с цитированием