我有一个这样的字符串:
string = "locations[0][street]=street&locations[0][street_no]=
34&locations[1][street]=AnotherStreet&locations[1][street_no]=43";
我必须用这个字符串做什么才能按照我的意愿使用locations[][]
?
答案 0 :(得分:1)
你可以写一个解析器:
var myStr = "locations[0][street]=street&locations[0][street_no]=34&locations[1][street]=AnotherStreet&locations[1][street_no]=43";
function parseArray(str) {
var arr = new Array();
var tmp = myStr.split('&');
var lastIdx;
for (var i = 0; i < tmp.length; i++) {
var parts = tmp[i].split('=');
var m = parts[0].match(/\[[\w]+\]/g);
var idx = m[0].substring(1, m[0].length - 1);
var key = m[1].substring(1, m[1].length - 1);
if (lastIdx != idx) {
lastIdx = idx;
arr.push({});
}
arr[idx * 1][key] = parts[1];
}
return arr;
}
var myArr = parseArray(myStr);
答案 1 :(得分:0)
正如Shadow向导所说,使用split和eval似乎是解决方案。 如果要避免错误,则需要先初始化位置。
stringArray=string.split("&");
for (var i=0;i<stringArray.length;i++){
eval(stringArray[i]);
}
但是,您可能需要注意street和street_no是什么。 因为它会产生错误,因为没有定义street。
编辑:您需要使用尽可能多的项目完全初始化位置,以避免错误。