Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript从循环中的JSON获取值_Javascript_Json_Node.js - Fatal编程技术网

Javascript从循环中的JSON获取值

Javascript从循环中的JSON获取值,javascript,json,node.js,Javascript,Json,Node.js,我有以下问题,我想从json获取所有polyline.points数据: "legs" : [ { "distance" : { "text" : "115 km", "value" : 115373 }, "duration" : { "text" : "1 hour 14 mins", "value"

我有以下问题,我想从json获取所有polyline.points数据:

"legs" : [
        {
           "distance" : {
              "text" : "115 km",
              "value" : 115373
           },
           "duration" : {
              "text" : "1 hour 14 mins",
              "value" : 4433
           },
           "duration_in_traffic" : {
              "text" : "1 hour 10 mins",
              "value" : 4205
           },
           "end_address" : "Ermelo, Netherlands",
           "end_location" : {
              "lat" : 52.2986269,
              "lng" : 5.629653999999999
           },
           "start_address" : "Zwijndrecht, Netherlands",
           "start_location" : {
              "lat" : 51.8108387,
              "lng" : 4.6268639
           },
           "steps" : [
              {
                 "distance" : {
                    "text" : "45 m",
                    "value" : 45
                 },
                 "duration" : {
                    "text" : "1 min",
                    "value" : 9
                 },
                 "end_location" : {
                    "lat" : 51.81113269999999,
                    "lng" : 4.627318
                 },
                 "html_instructions" : "Head \u003cb\u003enortheast\u003c/b\u003e on \u003cb\u003eKorenbloemstraat\u003c/b\u003e toward \u003cb\u003eLeeuwenbekstraat\u003c/b\u003e",
                 "polyline" : {
                    "points" : "whf{H{tf[y@{A"
                 },
在此json中有多个polyline.points键。 我有以下代码,但不起作用:

//console.log(body.routes[0].legs[0].steps[0].polyline.points);
    var keys = [];
    for(var i = 0;i<body.routes[0].legs[0].steps.length;i++)
    {
    Object.keys(body.routes[0].legs[0].steps[i]).forEach(function(value){
    if(value == 'polyline') {
      Object.keys(value).forEach(function(value){
        console.log(value);


    }
});
//console.log(body.routes[0]。legs[0]。steps[0]。polyline.points);
var键=[];

对于(var i=0;i嘿,你的'value'变量包含(key,value)对。所以使用value['polyline']来获取你的数据。

legs
是一个对象的属性,但是你没有说在这个级别上是否只有一个对象,或者如果它是数组的一部分,但是如果它是数组的一部分,就不应该太难修改

您可以使用reduce将
支腿.步数
数组转换为一个大数组,然后映射到该数组以提取
多段线.点

这样,如果
legs
数组或
steps
数组中有多个元素,它将正常工作。请注意,如果
polyline
未定义,它将引发异常,因此需要添加一些表单的错误检查

var data = data.legs.reduce((prev, cur) => {
    prev.push(...cur.steps);

    return prev;
  }, [])
  .map(x => x.polyline.points);


编辑:根据OPs注释进行修改:

这只会盲目地期望接收一个对象并从中获取第一个
路由
对象

这一秒将把
路线
步骤
展平为一个大的坐标数组。我知道你说过你不需要,但这似乎是一个有趣的挑战:)


仅供参考,它符合ES6,所以IE是最好的选择。

您可以在
上迭代(body.routes[0].legs[0].steps[i]){console.log(key)}
您的预期输出是什么?我希望所有“points”的值都用逗号分隔。在本例中,有1条多段线:whf{H{tf[y@{ACan无法在我的javascript中实现此功能…这是完整的json输出:@MichaelSmits在
路由
数组中可能有多个对象吗?如果有,您是否也需要提取嵌套在这些数组中的
?这是我在第一段中的意思。应该不会太难,如果您这样做,我会更新我的答案。无论哪种方式,请e define
how
它不起作用。不,routes数组中不会有多个对象。对不起,我是javascript新手!非常感谢您的帮助!当我使用该变量时,我得到以下响应:{decode:[Function],encode:[Function],fromGeoJSON:[Function],toGeoJSON:[Function]}