将诸如document.cookie之类的字符串转换为对象 [英] Converting strings like document.cookie to objects
问题描述
我有一个类似于document.cookie
的字符串:
I have a string similiar to document.cookie
:
var str = 'foo=bar, baz=quux';
将其转换为数组非常简单:
Converting it into an array is very easy:
str = str.split(', ');
for (var i = 0; i < str.length; i++) {
str[i].split('=');
}
它会产生如下内容:
[['foo', 'bar'], ['baz', 'quux']]
转换为对象(在这种情况下更合适)比较困难.
Converting to an object (which would be more appropriate in this case) is harder.
str = JSON.parse('{' + str.replace('=', ':') + '}');
这会产生一个像这样的对象,它是无效的:
This produces an object like this, which is invalid:
{foo: bar, baz: quux}
我想要这样的对象:
{'foo': 'bar', 'baz': 'quux'}
注意:我在示例中使用了单引号,但是在发布代码时,如果您使用的是JSON.parse()
,请记住它需要双引号而不是单引号.
Note: I've used single quotes in my examples, but when posting your code, if you're using JSON.parse()
, keep in your mind that it requires double quotes instead of single.
感谢大家.这是我将要使用的功能(供将来参考):
Thanks for everybody. Here's the function I'll use (for future reference):
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;
}
推荐答案
为什么这里确实需要JSON.parse
?修改数组示例
Why exactly do you need JSON.parse
in here? Modifying your arrays example
str = str.split(', ');
var result = {};
for (var i = 0; i < str.length; i++) {
var cur = str[i].split('=');
result[cur[0]] = cur[1];
}
修改
一个示例来说服您.
edit
An example to convince you.
这篇关于将诸如document.cookie之类的字符串转换为对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!