Is there by any chance a built-in javascript function that parses:
var string = '[2,1,-4]';
var multiString = '[[-3,2,-1][2,-3,2][1,-1,3]]';
to
var array = [2,1,-4];
var multiArray = [[-3,2,-1],[2,-3,2],[1,-1,3]];
or do I have to write a custom function for this?
-
2You have a syntax error in your resulting multiarray.VisioN– VisioN2014年05月01日 13:24:08 +00:00Commented May 1, 2014 at 13:24
-
1How did you end up with strings and not Arrays?putvande– putvande2014年05月01日 13:24:38 +00:00Commented May 1, 2014 at 13:24
-
1That could almost be valid JSON, but is not...deceze– deceze ♦2014年05月01日 13:24:48 +00:00Commented May 1, 2014 at 13:24
-
@putvande read from filelephleg– lephleg2014年05月01日 13:28:26 +00:00Commented May 1, 2014 at 13:28
3 Answers 3
Assuming your correct your multiString to the correct format
(ie. '[[-3,2,-1],[2,-3,2],[1,-1,3]]')
Then yes.
array = JSON.parse(string);
multiArray = JSON.parse(multiString);
For completeness, you can use eval:
var s = '[1,2,3]';
var a = eval(s);
however if the string is valid JSON, then as Niet suggested, JSON.parse is a much better solution.
Comments
If you want to do this on your own, it can be done using substring and split. A possible solution could look like this:
var multiString = '[[-3,2,-1][2,-3,2][1,-1,3]]';
var string = '[2,1,-4]';
function parse(input) {
var s = input;
// remove leading [ and trailing ] if present
if (input[0] == "[") {
s = input.substring(0, input.length);
}
if (input[input.length] == "]") {
s = s.substring(input.length-1, 1);
}
// create an arrray, splitting on every ,
var items = s.split(",");
return items;
}
// items is now an array holding 2,-1,4
var items = parse(string);
You can then split the bigger string into smaller chunks and apply the function to each part using array.map:
function parseAOfA(input) {
var s = input.substring(0, input.length).substring(input.length-1, 1);
s = s.substring(0, s.length).substring(s.length-1, 1);
s = s.split("][");
var items = s.map(parse);
return items;
}
var items = parseAOfA(multiString);