从字符串特定值中获取

take from a string specific values

本文关键字:获取 字符串      更新时间:2023-09-26

你好,我想从字符串中获取 i 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("[ ]"),但向我展示与我首先拥有的字符串相同的字符串。

原始字符串是 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]);
        }
    }
}