Парсинг строки JavaScript (для интеграции Slack) - PullRequest
0 голосов
/ 25 сентября 2018

В javascript, как лучше всего проанализировать следующее поле : пары значений из строки этого типа?Имейте в виду, что количество пар поле: значение будет различным.

" title : Это заголовок description : Это описание requestor : Джо Брэдли "

Хотелось бы, чтобы результатом был массив / объект (или любой другой) с именами полей и соответствующими значениями полей, с которыми я мог бы затем работать.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы можете разбить строку с помощью регулярного выражения, чтобы получить части, и цикл для создания массива или объекта:

var str = "title:This is the title description:This is the description requestor:Joe Bradley"

var obj = {}, arr = str.split(/\s*(\w+)\s*:/)

for (var i = 2; i < arr.length; i += 2)
  obj[arr[i - 1]] = arr[i]

console.log( obj )
0 голосов
/ 25 сентября 2018

Попробуйте что-то подобное, используя редуктор и комбинацию split и indexOf.

const str = "TITLE:This is the title DESCRIPTION:This is the description REQUESTOR:Joe Bradley";

let lastRecordedKey = "";
const res = str.split(" ").reduce((acc, cur)=>{
    if(cur.indexOf(":") === -1){
      acc[lastRecordedKey] += ` ${cur}`;
    }else{
      const words = cur.split(":");
      lastRecordedKey = words[0];
      acc[lastRecordedKey] = words[1];
    }
    return acc;
}, {});

console.log(res);
...