расщепление строки в объект JavaScript - PullRequest
0 голосов
/ 08 марта 2019

У меня есть эта строка result:tie,player:paper,computer:paper

Полагаю, вы могли бы разбить массивы и сделать объект и разобрать его как объект, однако это не очень хороший подход.

Как бы я получил эту строку в качестве объекта?

let string = "result:tie,player:paper,computer:paper"

Ответы [ 3 ]

1 голос
/ 08 марта 2019

Разделите на ,, чтобы получить токены key: value, разделите их на :, чтобы получить ключ и значение, и добавьте их к уменьшенному объекту, который собирает пары значений ключа.

var temp = "result:tie,player:paper,computer:paper";

var obj = temp.split(',').reduce((result, token)=>{
  var [key, value] = token.split(':');
  
  result[key] = value;
  return result;
}, {});

console.log(obj);
1 голос
/ 08 марта 2019

Разделить на ,, выполнить итерацию и разбить каждую строку на : и создать свойство ключа / значения объекта на основе этого. Используйте деструктурирование для простоты:

let string = "result:tie,player:paper,computer:paper";
let obj = {};
let propsArr = string.split(",");
propsArr.forEach(s => {
  var [key, value] = s.split(":");
  obj[key] = value;
});

console.log(obj);
1 голос
/ 08 марта 2019

Для этой конкретной строки я бы преобразовал строку в правильный JSON, заключив ключи и значения в " s, а затем использовав JSON.parse:

const string = "result:tie,player:paper,computer:paper";
const json = '{' + string.replace(/(\w+):(\w+)/g, `"$1":"$2"`) + '}';
console.log(JSON.parse(json));

Хотя, в идеале, все, что обслуживает , эта строка должна давать вам что-то в формате JSON, а не заставлять вас прибегать к хакерскому методу, такому какэто чтобы справиться с неправильным вводом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...