Как зациклить строку как пары ключ-значение - PullRequest
4 голосов
/ 29 февраля 2012

Я хочу зациклить строку как пары ключ / значение. Данные передаются мне в виде строки (я использую плагин jstorage).

Я пытался разбить строку как массив, но он не возвращает правильный ключ / значения.

Пример

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

Ответы [ 2 ]

7 голосов
/ 29 февраля 2012

Если вы всегда получаете такую ​​строку, то есть ключи и значения в двойных кавычках, вы можете добавить {...} к строке и проанализировать ее как 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];
}
0 голосов
/ 29 февраля 2012

Вам нужно оценить его в объект JavaScript.Если вы доверяете источнику или можете проверить содержимое, вы можете сделать это:

s = document.createElement('script')
s.type='text/javascript';
s.innerHTML = 'var data = {'+ text + '}';
document.getElementsByTagName('head')[0].appendChild(s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...