Как преобразовать строку в объект с парами ключ-значение - PullRequest
4 голосов
/ 17 мая 2019

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

'a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc'

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

{ a: 'aaa, bbb, ccc', b: 'aaa, bbb, ccc', c: 'aaa, bbb, ccc' }

Я пытался разбить на &, а затем =, но в результате:

[ ['a', 'aaa','bbb','ccc'], ['b', 'aaa','bbb','ccc'], ['c', 'aaa','bbb','ccc' ] ]

Ответы [ 4 ]

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

Вы можете просто использовать URLSearchParams :

var params = new URLSearchParams('a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc');
var obj = Object.fromEntries(params.entries())
console.log(obj);

Если в вашем браузере нет ни одной из этих функций, вы можете использовать полифилл:

https://www.npmjs.com/package/url-search-params-polyfill https://github.com/feross/fromentries

1 голос
/ 17 мая 2019

Если вы хотите просто использовать split(), вам нужно сделать объект из разделенных ключей и значений. Вы можете сделать это в цикле reduce (или forEach()):

s = 'a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc'
let pairs = s.split('&')                // each pair is like a=aaa,bbb,ccc
let obj = pairs.reduce((obj,data)=> {
    let [k, v] = data.split('=')        // split each pair into key/value
    obj[k] = v                          // add the key to the object
    return obj
}, {})
console.log(obj)
1 голос
/ 17 мая 2019

Вы можете использовать пакет типа QS или URLSearchParams Polyfill для поддержки любых браузеров, таких как IE и Node.js.

См. Пример ниже:

console.log(Qs.parse('a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc'))
<script src="https://unpkg.com/qs@6.7.0/dist/qs.js"></script>
0 голосов
/ 17 мая 2019

Вы можете просто пройти по полученному массиву следующим образом:

var myObj = {};
for (var i=0; i<arr.length; i++) {
    for (var j=0; j<arr[i].length; j++) {
        var newProp = arr[i].shift();     
        myObj[newProp] =  arr[i].join()
    }
}

Не проверял, но я думаю, что это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...