2016-08-12 1 views
2

я получил очень общий вопрос, но с изюминкой, которая является причиной для этого поста:генерировать JS объект ключ-значение из строки

Я хочу, чтобы создать ключ, значение объекта из строки.

моя строка выглядит следующим образом:

01§§foo§§bar§§someLink

(я могу изменить символы-разделители, чтобы все, что я хочу, если там должно быть как-то очень плотное решение с конкретным символом)

сейчас, я хочу объект с ключевым значением, и большинство вопросов об этой проблеме уже получили datapair в строке (например, «id: 01, title: foo»), но это не случай в моей проблеме.

я хочу создать что-то вроде этого:

var modules = [ 
{"ID":"01", "title":"foo", "description":"bar","link":"someLink"}, 
//more entries from more strings 
]; 

причины для ключа, значение объекта в том, что есть больше эти строки, которые я преобразовываю из базы данных. Я хочу, чтобы это было в ключе, объекте ценности, поэтому его легче работать с данными позже в моем инструменте.

Спасибо заранее

ответ

1

Вы можете использовать Array#split для строки и массив для ключей.

var string = '01§§foo§§bar§§someLink', 
 
    moduleKeys = ["ID", "title", "description", "link"], 
 
    object = {}; 
 

 
string.split('§§').forEach(function (a, i) { 
 
    object[moduleKeys[i]] = a; 
 
}); 
 

 
console.log(object);

Methode для нескольких строк.

function getData(array) { 
 
    var moduleKeys = ["ID", "title", "description", "link"]; 
 
    return array.map(function (string) { 
 
     var object = {}; 
 
     string.split('§§').forEach(function (a, i) { 
 
      object[moduleKeys[i]] = a; 
 
     }); 
 
     return object; 
 
    }); 
 
} 
 

 
var strings = ['01§§foo§§bar§§someLink', '02§§foo§§bar§§someLink']; 
 
console.log(getData(strings));

+0

спасибо большое, я был действительно близок с моим entirley другим подходом по этому вопросу и быть справедливым это был беспорядок. Но благодаря вашему очень симуляционному и чистому решению я обнаружил ошибку, которая давала мне головную боль: ссылка в моей строке «https: // [....]», и мой бласор прокомментировал все позади «//» .. Это была настоящая проблема. –

+0

Эй, это я снова, как вы это делаете ... это работает. Консоль выдает все правильное, ура. Но когда я пытаюсь получить доступ к моему объекту (я назвал его модулями) с модулями [0], он говорит undefined. Поэтому я также не могу получить доступ к нему с помощью модулей [0] .ID; модули [1] - то же самое –

+0

. Мой «объект» - это объект, а не массив. –

 Смежные вопросы

  • Нет связанных вопросов^_^