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
}));