是否有任何机会解析内置的javascript函数:
var string = '[2,1,-4]';
var multiString = '[[-3,2,-1][2,-3,2][1,-1,3]]';
到
var array = [2,1,-4];
var multiArray = [[-3,2,-1],[2,-3,2],[1,-1,3]];
还是我必须为此编写自定义函数?
答案 0 :(得分:2)
假设您的multiString更正为正确的格式
(即。'[[-3,2,-1]
,
[2,-3,2]
,
[1,-1,3]]'
)
然后是。
array = JSON.parse(string);
multiArray = JSON.parse(multiString);
答案 1 :(得分:0)
如果您想自己动手,可以使用substring和split来完成。可能的解决方案可能如下所示:
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);
然后,您可以将较大的字符串拆分为较小的块,并使用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);
答案 2 :(得分:0)
为完整起见,您可以使用 eval :
var s = '[1,2,3]';
var a = eval(s);
但是如果字符串是有效的JSON,那么正如 Niet 建议的那样,JSON.parse是一个更好的解决方案。