У меня есть эта строка result:tie,player:paper,computer:paper
Я думаю, вы могли бы разбить массивы и создать объект и проанализировать его как объект, однако это не кажется хорошим подходом.
Как мне получить эту строку как объект?
let string = "result:tie,player:paper,computer:paper"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для этой конкретной строки я бы преобразовал строку в правильный JSON, окружив ключи и значения "s, а затем использовал JSON.parse:
const string = "result:tie,player:paper,computer:paper";
const json = '{' + string.replace(/(\w+):(\w+)/g, `"$1":"$2"`) + '}';
console.info(JSON.parse(json));Хотя в идеале, какой бы служит вы ни использовали, эта строка должна давать вам что-то в формате JSON, а не заставлять вас прибегать к хакерскому методу, подобному этому, для обработки неверных входных данных.
Прием за 10 минут, чистая красота
Я возвращаю буфер из скрипта Python в JS. Не думайте, что библиотека, которую я использую, поддерживает JSON.
Это все еще проблема X/Y - вероятно, полезно исследовать (или спросить), как выполнить преобразование на стороне python, кажется странным, что библиотека, которая выводит объекты, не предоставляет никакой возможности выводить общий сериализованный объект (то есть, формате JSON).
На заметку: хороший трюк, но он не сработает, если ключ не содержит символа слова xyz@123: some value
@JonasGrønbek Можете ли вы уточнить, может ли объект содержать свойства/значения, отличные от слов, или :s или ,s, которые не являются частью разделителей ключ-значение?
Не может, это точно :)
Разделите ,, чтобы получить токены ключ:значение, разделите их на :, чтобы получить ключ и значение, и добавьте их к уменьшенному объекту, который собирает пары ключ-значение.
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.info(obj);Разделить на ,, выполнить итерацию и разделить каждую строку на : и создать свойство ключа/значения объекта на основе этого. Используйте деструктурирование для простоты:
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.info(obj);
Вы должны просто разделить на
,, а затем разделить на:.