Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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 - Fatal编程技术网

JavaScript json操作问题

JavaScript json操作问题,javascript,Javascript,我试图操纵上述数据,但它没有给出预期的结果: [ { "timing": [ { "zone": [ { "stepName": "Pick Place Tray", "timeInfo": [

我试图操纵上述数据,但它没有给出预期的结果:

     [
            {
              "timing": [
                {
                  "zone": [
                    {
                      "stepName": "Pick Place Tray",
                      "timeInfo": [
                        "6.0"
                      ]
                    },
                    {
                      "stepName": "Pick Place Back Bezel",
                      "timeInfo": [
                        "3.3"
                      ]
                    },
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                }
              ],
            },
            {
              "zone": [
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                },
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                }
              ],
            },
            {
              "zone": [
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                },
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                }
              ],
            },
          ]
        },
        {
          "timing": [
            {
              "zone": [
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                },
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                }
              ],

            },
            {
              "zone": [
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                },
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                }
              ],
            }
          ]
        },
        {
          "timing": [
            {
              "zone": [
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                },
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                }
              ],

            },{
              "zone": [
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                },
                {
                  "stepName": "Pick Place Tray",
                  "timeInfo": [
                    "6.0"
                  ]
                },
                {
                  "stepName": "Pick Place Back Bezel",
                  "timeInfo": [
                    "3.3"
                  ]
                }
              ],
            }
          ]
        }
      ]
我期待下面的结果。它将在每个对象中添加timeInfo数组的所有第一个元素

请看下面的json

for(let i of data){
        for (let j of i["timing"]){
        let zone_count = 0
        for(let k of j["zone"]){
            if(k["timeInfo"].length){
                zone_count+=parseFloat(k["timeInfo"][0])
            }
        }
    }
}

在所有区域对象中,它应该是timeInfo数组的所有第一个值的总和。

区域计数没有分配给任何对象。您需要将区域计数分配回阵列

您永远不会创建数据结构。您生成的唯一输出是一个变量的和

您需要映射数据和嵌套数据,并在其中执行求和

以下是一种功能性方法:

    [
         {
             "timing": [
                 {
                     "zone": 18.8
                 },
                 {
                     "zone": 18.06,
                 },
                 {
                     "zone": 18.6
                 },
             ]
         },
         {
             "timing": [
                 {
                     "zone": 18.6,
                 },
                 {
                     "zone": 18.6,
                 }
             ]
         },
         {
             "timing": [
                 {
                     "zone":18.06,

                 },{
                     "zone": 18.06,
                 }
             ]
         }
     ]
如果除计时之外还有其他字段需要保留,请使用…rest,如下所示:

let result = data.map(({timing}) => ({
    timing: timing.map(({zone}) => ({
        zone: zone.reduce((sum, {timeInfo}) => sum + (timeInfo && +timeInfo[0]), 0)
    }))
}));

请阅读json标记的用法说明,尤其是大写字母。这与JSON无关。您正在处理JavaScript对象。是的,我想总结的JavaScript对象好的,我已经从您的问题中删除了所有对JSON的引用-您得到的响应是什么?您发布的代码片段只是增加了可变区域计数。你不需要对变量做任何事情,也不需要返回任何对象。嗨,trincot,如果我除了计时之外还有额外的字段,我该怎么处理呢?我有三个键,时间,名字,模式。此方法名称和模式丢失请参见答案的补充。
let result = data.map(({timing, ...rest}) => ({
    timing: timing.map(({zone}) => ({
        zone: zone.reduce((sum, {timeInfo}) => sum + (timeInfo && +timeInfo[0]), 0)
    })),
    ...rest
}));