【发布时间】:2011-06-30 03:51:12
【问题描述】:
我有一个类似于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;
}
【问题讨论】:
-
这是一个真实的项目,还是一个高尔夫风格问题的尝试?
-
我不会在
', '上拆分(注意空格),而是在','(没有空格)上拆分,然后在trim上拆分各个部分。这使得是否使用 0、1、2、.. 空格甚至制表符来“美化”输入字符串变得不重要了。 -
如果浏览器只实现cookie的对象版本当然会很好。像
cookieObject这样的东西会很好。
标签: javascript arrays string object