Преобразовать serialized () сложную строку в массив объектов - PullRequest
2 голосов
/ 29 мая 2019

У меня есть строка:

"id=1&lotcode=ACB&location=A1&id=2&lotcode=CCC&location=B1"

Теперь я хочу получить массив объектов для передачи в контроллер через ajax, например:

[{"id":1, "lotcode"="ACB","location":"A1"},{"id":2, "lotcode"="CCC","location":"B1"}]

Я начал с разделения строки

var string = data.split('&', 2);

Теперь я застрял здесь ...

1 Ответ

3 голосов
/ 29 мая 2019

Можно разделить строку на &, а затем взять пары ключ / значение и присвоить их массиву с возрастающим индексом.

В этом решении предполагается, что все ключи имеют одинаковое количество.

var string = "id=1&lotcode=ACB&location=A1&id=2&lotcode=CCC&location=B1",
    result = [],
    indices = {};

string.split('&').forEach(s => {
    var [key, value] = s.split('='),
        index = (indices[key] || 0);
    
    result[index] = result[index] || {};
    result[index][key] = value;    
    indices[key] = index + 1;
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...