Как распарсить строку на ключ/значение?

Не понимаю как из строки: "ST00012|Name=Мр"Водоканал"|PersonalAcc=40702813070000012а3456|BankName=Банк"

Можно получить объект ключ/значение


Ответы (1 шт):

Автор решения: Oliver Patterson

Сплитим изначальную строку по | - это как я понял наш делитель между ключ=значение.
На выходе получим что-то типо:
['ST00012', 'Name=Мр "Водоканал"', 'PersonalAcc=40702813070000012а3456', 'BankName=Банк']

Дальше нам нужно пробежаться по этому массиву и сделать еще раз split каждого элемента массива по = который разделяет ключ и значение, и записать все это в объект - это все мы делаем в .reduce()

const rawString = 'ST00012|Name=Мр "Водоканал"|PersonalAcc=40702813070000012а3456|BankName=Банк';

const parsedObject = rawString.split("|").reduce((acc, item) =>
{
  const [key, value] = item.split("=");
  
  acc[key] = value;
  
  return acc;
}, {})

console.info(parsedObject)


Второй вариант, где не будут добавляться ключи без значений.

const rawString = 'ST00012|Name=Мр "Водоканал"|PersonalAcc=40702813070000012а3456|BankName=Банк';

const parsedObject = rawString.split("|").reduce((acc, item) =>
{
  const [key, value] = item.split("=");
  
  if (value !== undefined)
  {
    acc[key] = value;
  }
  
  return acc;
}, {})

console.info(parsedObject)

→ Ссылка