使用javascript将字符串转换为数组

时间:2011-08-01 13:02:46

标签: javascript arrays string

我有一个这样的字符串:

string = "locations[0][street]=street&locations[0][street_no]=
         34&locations[1][street]=AnotherStreet&locations[1][street_no]=43";

我必须用这个字符串做什么才能按照我的意愿使用locations[][]

2 个答案:

答案 0 :(得分:1)

你可以写一个解析器:

var myStr = "locations[0][street]=street&locations[0][street_no]=34&locations[1][street]=AnotherStreet&locations[1][street_no]=43";


function parseArray(str) {
    var arr = new Array();
    var tmp = myStr.split('&');
    var lastIdx;
    for (var i = 0; i < tmp.length; i++) {
        var parts = tmp[i].split('=');
        var m = parts[0].match(/\[[\w]+\]/g);
        var idx = m[0].substring(1, m[0].length - 1);
        var key = m[1].substring(1, m[1].length - 1);
        if (lastIdx != idx) {
            lastIdx = idx;
            arr.push({});
        }
        arr[idx * 1][key] = parts[1];
    }
    return arr;
}

var myArr = parseArray(myStr);

答案 1 :(得分:0)

正如Shadow向导所说,使用split和eval似乎是解决方案。 如果要避免错误,则需要先初始化位置。

stringArray=string.split("&");
for (var i=0;i<stringArray.length;i++){
    eval(stringArray[i]);
}

但是,您可能需要注意street和street_no是什么。 因为它会产生错误,因为没有定义street。

编辑:您需要使用尽可能多的项目完全初始化位置,以避免错误。