Преобразуйте строку в объект с полями

#javascript

Вопрос:

предположим, у нас есть строка, подобная этой:

 string = 'user - 2021-02-19 08:34:02 - PACKED, user2 - 2021-02-26 12:18:25 - PACKED'
 

Как мы можем преобразовать эту строку в объекты с этими полями:

 if (lastWord == 'PACKED'){
        obj1 = {
                User: 'user',
                Time: '2021-02-19 08:34:02'
        }
        obj2 = {
                User: 'user2',
                Time: '2021-02-26 12:18:25'
        }
}
 

Если мы используем json.parse, результат будет:

 var obj = JSON.parse(string);
console.log(obj):

[
  'user - 2021-02-19 08:34:02 - PACKED',
  'user2 - 2021-02-26 12:18:25 - PACKED'
]
 

Я думаю, что мы можем начать отсюда, чтобы сделать все проще.

Комментарии:

1. Что вы пробовали до сих пор?

Ответ №1:

 // input: 'user - 2021-02-19 08:34:02 - PACKED, user2 - 2021-02-26 12:18:25 - PACKED'
// [{ User: 'user', Time: '2021-02-19 08:34:02' }, { User: 'user2', Time: '2021-02-26 12:18:25' }]
function parse(str) {
    const extractPart = str.split(",").map(s => s.trim());
    return extractPart.map(splitEachPart);
}

// input:  user - 2021-02-19 08:34:02 - PACKED
// output: { User: 'user', Time: '2021-02-19 08:34:02' }
function splitEachPart(str) {
    const [user, time, packed] = str.split(" - ")
    return {
        User: user,
        Time: time
    }
}


console.log(parse('user - 2021-02-19 08:34:02 - PACKED, user2 - 2021-02-26 12:18:25 - PACKED'));
 

Код сначала разделяется запятой, а затем разделяется тире. Поэтому мы полагаемся на предположения о запятых и тире во входном формате, чтобы вывод был правильным.