Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.03.2018, 23:12
Интересующийся
Отправить личное сообщение для kakadyi Посмотреть профиль Найти все сообщения от kakadyi
 
Регистрация: 08.06.2017
Сообщений: 10

Сообщение от рони Посмотреть сообщение
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);
    return f;
  }, {});
};
var output =  fn(obj);
alert(JSON.stringify(output));
Уважаемый Рони,расскажите алгоритм решения,пожалуйста. А то слишком сложно для меня
Ответить с цитированием
  #12 (permalink)  
Старый 17.03.2018, 00:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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
Ответить с цитированием
  #13 (permalink)  
Старый 17.03.2018, 00:35
Интересующийся
Отправить личное сообщение для kakadyi Посмотреть профиль Найти все сообщения от kakadyi
 
Регистрация: 08.06.2017
Сообщений: 10

рони,
Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод картинки по дням недели Dan93 Общие вопросы Javascript 5 28.07.2017 02:19
Показ блока по часам, минутам, и дням недели Tivok Общие вопросы Javascript 10 28.10.2016 18:07
Добавить объект в другой объект фонарик Общие вопросы Javascript 5 11.10.2015 01:57
Создать объект в объекте Bryant-24 Общие вопросы Javascript 3 10.07.2013 16:06
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45