将诸如document.cookie之类的字符串转换为对象 [英] Converting strings like document.cookie to objects

查看:255
本文介绍了将诸如document.cookie之类的字符串转换为对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类似于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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆