У меня есть строка, похожая на document.cookie
:
var str = 'foo=bar, baz=quux';
Преобразовать его в массив очень просто:
str = str.split(', ');
for (var i = 0; i < str.length; i++) {
str[i].split('=');
}
Он производит что-то вроде этого:
[['foo', 'bar'], ['baz', 'quux']]
Конвертировать в объект (что было бы более уместно в этом случае) сложнее.
str = JSON.parse('{' + str.replace('=', ':') + '}');
Создает такой объект, который недопустим:
{foo: bar, baz: quux}
Я хочу такой объект:
{'foo': 'bar', 'baz': 'quux'}
Примечание : в своих примерах я использовал одинарные кавычки, но при публикации вашего кода, если вы используете JSON.parse()
, помните, что для него нужны двойные кавычки вместо одинарных.
Обновление
Спасибо всем. Вот функция, которую я буду использовать (для дальнейшего использования):
function str_obj(str) {
str = str.split(', ');
var result = {};
for (var i = 0; i < str.length; i++) {
var cur = str[i].split('=');
result[cur[0]] = cur[1];
}
return result;
}