如何将字符串循环为键值对

时间:2012-02-28 22:42:51

标签: javascript arrays string loops for-loop

我想循环一个字符串作为键/值对。数据以字符串形式给出(我使用的是jstorage插件)。

我试图将字符串拆分为数组,但它没有返回正确的键/值。

实施例

 "color":"#000000", "font":"12px", "background":"#ffffff",

2 个答案:

答案 0 :(得分:7)

如果你总是得到这样的字符串,即双引号中的键和值,你可以将{...}添加到字符串parse it as JSON

// remove trailing comma, it's not valid JSON
var obj = JSON.parse('{' + str.replace(/,\s*$/, '') + '}');

如果没有,假设,:不能出现在键或值中,分割字符串也很容易:

var obj = {},
    parts = str.replace(/^\s+|,\s*$/g, '').split(',');

for(var i = 0, len = parts.length; i < len; i++) {
    var match = parts[i].match(/^\s*"?([^":]*)"?\s*:\s*"?([^"]*)\s*$/);
    obj[match[1]] = match[2];
}

答案 1 :(得分:0)

您需要将其评估为JavaScript对象。如果您信任源,或者可以验证内容,则可以执行以下操作:

s = document.createElement('script')
s.type='text/javascript';
s.innerHTML = 'var data = {'+ text + '}';
document.getElementsByTagName('head')[0].appendChild(s);