I have a string of the form
p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31 and so on
I want to get an array of all values for p2 in javascript, e.g. in this example it would be ["v21", "v22", "v23"].
How do I do it? Do I need to use regex?
I have a string of the form
p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31 and so on
I want to get an array of all values for p2 in javascript, e.g. in this example it would be ["v21", "v22", "v23"].
How do I do it? Do I need to use regex?
You might want to have a look at a JavaScript function I wrote to mimic the $_GET
function in PHP:
http://www.martinandersson.com/matooltip/js/ma_GET.js
Google the source code for this line:
returnMe[key] = $.parseJSON( decodeURIComponent(tmpArray[1]) );
The problem with my current implementation is that any old key already stored, will have his value overwritten. What you need to do is to check if the key is already present, if so, read the old value and store him back in an array before you push the new value onto the same array.
The particular line i quoted uses JQuery to make the value into a JavaScript object. If you don't want to use JQuery for this feature then you could use JSON.parse
or some other third party library.
Hope it helps, write me a comment if you don't succeed and I'll get back to you.
Try this:
var string = 'p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31';
var rawParams = string.split('&');
var params = [];
var param = '';
for (var i in rawParams) {
param = rawParams[i].split('=');
if ('p2' == param[0]) {
params.push(param[1]);
}
}
I don't recommend RegExp here, since the problem is pretty easy to be resolved with one simple for
loop.
EDIT:
For sake of any haters - here's the working example: http://jsfiddle.net/j7sY6/1/
For a regex solution:
var matchs = [];
var re = /p2=([^&]+)/g;
while (match = re.exec('p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31')) {
matchs.push(match[1]);
}
Output:
matches = ["v21", "v22", "v23"]