将字符串解析为数组

时间:2014-05-01 13:22:39

标签: javascript arrays parsing

是否有任何机会解析内置的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]];

还是我必须为此编写自定义函数?

3 个答案:

答案 0 :(得分:2)

假设您的multiString更正为正确的格式
(即。'[[-3,2,-1] , [2,-3,2] , [1,-1,3]]'

然后是。

array = JSON.parse(string);
multiArray = JSON.parse(multiString);

答案 1 :(得分:0)

如果您想自己动手,可以使用substringsplit来完成。可能的解决方案可能如下所示:

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是一个更好的解决方案。