Показать сообщение отдельно
  #12 (permalink)  
Старый 17.03.2018, 00:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,127

kakadyi,
var obj = {
  'пн': '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' }
function fn(b) {
  var e = void 0;//хранилище 
  return Object.keys(b).reduce(function(f, a, c, d) {
    c = b[a] == b[d[++c]]; // равно текущее значение следующему или нет
    d = void 0 === e; //хранился ключ с прошлого  раза  или нет
    c && d ? e = a : c || d ? !c && d && (f[a] = b[a]) : (f[e + "-" + a] = b[a], e = void 0);
    //c && d если значения равны и хранилище пусто, сохраняем текущий ключ  e = a
   //  !c && d && (f[a] = b[a])  иначе если значения неравны и хранилище пусто сохраняем ключ и значение ключа в новом обьекте
   // (f[e + "-" + a] = b[a], e = void 0)   иначе если значения неравны и хранилище непусто сохраняем значение из хранилища + ключ и значение ключа в новом обьекте
   // и обнуляем хранилище
    return f; //возращаем обьект {} для следующей итерации
  }, {});
};
var output =  fn(obj);
alert(JSON.stringify(output));


оператор-вопросительный-знак
reduce
object-keys-obj
сериализация-метод-json-stringify
Ответить с цитированием