从字符串中获取特定值

时间:2014-10-19 08:11:16

标签: javascript

您好我想从一个字符串中获取特定于javascript的值,该字符串具有此格式

[
    {
        "st_asgeojson": "{\"type\":\"MultiLineString\",\"coordinates\":[[[23.4582348,37.5062675],[23.4577141,37.5066109],[23.4572601,37.5070038],[23.4566746,37.507301],[23.455698,37.5076256],[23.4549737,37.5079214],[23.4545445,37.5080235],[23.4538579,37.5078873],[23.4325504,37.5231202],[23.4324646,37.5234265],[23.4324646,37.5236308],[23.4326363,37.5237669]]]}"
    },
    {
        "st_asgeojson": "{\"type\":\"MultiLineString\",\"coordinates\":[[[23.4568043,37.5042114],[23.4566078,37.5040436],[23.4567394,37.5038528],[23.4571075,37.5037422],[23.4575424,37.5035515],[23.4580841,37.5031548],[23.4589958,37.5027237]]]}"
    }
]

从这个字符串我想创建一个新的2d数组,在这个数组中我想只放置坐标。 例如,我希望第一行有st_asgeojson个坐标[23.4582348,37.5062675],....,[23.4326363,37.5237669],第二行有st_asgeojson个坐标[23.4568043,37.5042114],[23.4566078,37.5040436],......,[23.4589958,37.5027237]

这可以吗?

我尝试str.split("[ ]"),但显示的方法与我第一次使用的字符串相同。

1 个答案:

答案 0 :(得分:0)

原始字符串是JSON,因此您首先必须将其转换为JSON.parse()的数组:

var arr = JSON.parse(str);

然后st_asgeojson属性的值是另一个JSON编码的对象,所以你也必须解析它:

var first_coords = JSON.parse(arr[0].st_asgeojson).coordinates[0][0];
var second_coords = JSON.parse(arr[1].st_asgeojson).coordinates[0][0];

字符串中没有[ ],所以我不确定你期望str.split('[ ]')达到什么目的。你的意思是使用正则表达式,str.split(/ /)将它分割成空格吗?

要使用循环来完成所有操作:

var arrLeng = arr.length;
for (var i = 0; i < arrLeng; i++) {
    var coordArray = JSON.parse(arr[i].st_asgeojson).coordinates;
    var coordArrLeng = coordArray.length;
    for (var j = 0; j < coordArrLeng; j++) {
        var coords = coordArray[0][0];
        var coordLeng = coords.length;
        for (var k = 0; k < coordLeng; k++) {
            alert(coords[k]);
        }
    }
}