直转字符串为数组

直接转引号引出的数组为真正数组。如果需要也可以作简单修改以适应对象情况。

var a ='[34444a44,[a1,[4,5],[2,3]],1]'
function turn(a){
    turn.c = turn.c || 1;
    var res;
    var str;
    while( turn.c < a.length){
        res = res || [];
        if(a[turn.c] === '['){
            turn.c++;
            res.push(turn(a))
        }else if(a[turn.c] === ']'){
            return res;
        }else if(/\w/.test(a[turn.c])){
            str = str ? str.concat(a[turn.c] ):a[turn.c] 
            if(/\]|\,/.test(a[turn.c+1])){
                if(str - parseFloat( str ) >= 0) str -=0;;
                res.push(str);
                str = undefined;
            }
        }
        turn.c++;
    }
    return res;
}
console.log(turn(a)) // Array [ "34444a44", Array[3], 1 ]

 

posted on 2014-12-15 15:13  吹过的风  阅读(188)  评论(0编辑  收藏  举报