преобразовать строку в объект, когда нет разделителя запятыми - PullRequest
0 голосов
/ 01 июля 2019

У меня есть строка как

string = "name: my name 
           email: myemail
           address: my address";

, которая будет вставлена ​​пользователем.Теперь я хочу, чтобы он преобразовал объект таким образом, что

obj = {"name":"my name", "email":"myemail", "address":"my address"}

Как я могу сделать это в JS?

Я уже пробовал эту строку для объекта в JS , но этоработает только тогда, когда есть разделитель запятыми.

Ответы [ 3 ]

0 голосов
/ 01 июля 2019

Вы можете использовать функцию ECMAScript 2019 Object.fromEntries():

const string = "name: my name\nemail: myemail\naddress: my address";

const object = Object.fromEntries(string.split(/\n/).map(s => s.split(/: /)));

console.log(object);
0 голосов
/ 01 июля 2019

Звучит как небольшая проблема кодирования:)

const convertStrToObj = (str) =>
str.split('\n').reduce((result, field) => {
  const splitField = field.split(':')
  const fieldName = splitField[0].trim()
  const fieldValue = splitField[1].trim()
  return {
    ...result,
    [fieldName]: fieldValue
  }
}, {})
0 голосов
/ 01 июля 2019

Самый простой способ решить эту проблему - это пресечь ее в зародыше - отправить объект, а не строку. Если это невозможно, используйте split и reduce в многострочной строке:

const string = `name: my name 
email: myemail
address: my address`;
const res = string.split("\n").map(e => e.split(":").map(f => f.trim())).reduce((a, [k, v]) => ({ ...a, [k]: v }), {});
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...