Как преобразовать существующий объект в новый объект javascript - PullRequest
1 голос
/ 04 февраля 2020

Я хотел бы реализовать существующий объект sampleobj, как показано в ожидаемом результате. У меня есть ключ jan, feb, mar,apr и значение, разделенное запятыми, первая строка должна всегда принимать begin, а вторая - end

"jan": "07: 30,23: 00" // begin, end

до

"jan_begin": "07:30", "jan_end": "23:00",

let res ={};
Object.keys(sampleobj).forEach(key => {
  Object.assign({},key_begin: sampleobj[key].split(",")[0], key_end: sampleobj[key].split(",")[1])
})
var sampleobj = {
  "jan": "07:30,23:00"
  "feb": "08:30,23:00"
  "mar": "07:30,22:00"
  "apr": ""
  "30-12-2019": "10:00,24:00",
  "31-12-2019": "11:00,24:00"
}

Ожидаемый результат:

{
  month:{
   "jan_begin": "07:30",
   "jan_end": "23:00",  
   "feb_begin": "08:30",
   "feb_end": "23:00", 
   "mar_begin": "07:30",
   "mar_end": "22:00",    
   "apr": "",
  },
  fields: [
   {date: "30-12-2019", begin: "10:00", end: "24:00"},
   {date: "31-12-2019", begin: "11:00", end: "24:00"},
  ]
 }

1 Ответ

2 голосов
/ 04 февраля 2020

Можно сначала проверить значение, а затем выбрать пустую строку или взять разделенные начальные / конечные значения.

var object = { jan: "07:30,23:00", feb: "08:30,23:00", mar: "07:30,22:00", apr: "", "30-12-2019": "10:00,24:00", "31-12-2019": "11:00,24:00" },
    result = Object
        .entries(object)
        .reduce((r, [k, v]) => {
            if (v === '') {
                r.month[k] = '';
                return r;
            }
            var [begin, end] = v.split(',');
            if (k.length === 3) {
                r.month[k + '_begin'] = begin;
                r.month[k + '_end'] = end;
            } else {
                r.fields.push({ date: k, begin, end });
            }
            return r;
        }, { month: {}, fields: [] });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...