我有以下查询字符串:
?rooms[0][adult]=2&rooms[0][children]=3,4&rooms[1][adult]=3
AngularJS或vainilla Javascript中是否有任何直接方法可以从中获取以下对象:
[
{
adult: 2,
children: [3, 4]
},
{
adult: 3,
}
]
或者我是否必须为此案例实现特定的反序列化器?
答案 0 :(得分:0)
我解决了。
我做的是:
$location.search()
/rooms\[(.*)\]\[(.*)\]/
获取数组的索引和内部对象的键。算法是:
let queryString = $location.search();
let regEx = /rooms\[(.*)\]\[(.*)\]/;
let rooms = [{}];
for (let roomKey in queryString) {
let matches = roomKey.match(regEx);
if(matches) {
let index = parseInt(matches[1]);
let key = matches[2];
if(key == 'adult') {
rooms[index] = {
adult: queryString[roomKey]
}
}
else if (key == 'children') {
rooms[index] = {
children: queryString[roomKey] == "" ? [] : queryString[roomKey].split(',')
}
}
}
}