你吃西瓜皮 2019-01-30 14:34 采纳率: 100%
浏览 1059
已采纳

js遍历json数据计算,对比另一条json,组成表格

//有两条json数据a和b,如下图:
//a的json中有一个fruit数组和stationery数组(可以为空),里面有名称和数量。
//b的json中对应的类型和特征
//需求:根据a和b,计算水果数量,组成如下表格。
//这种json对象里套数组有点懵,组成表格时,需要取a,b重新组成新的json吗?
谢谢.

var a = [{
                "id": "1548208772510",
                "area": "上海",
                "fruit": [{
                    "fname": "苹果",
                    "fnum": 4
                }],
                "stationery": [],
            },
            {
                "id": "1548208889319",
                "area": "上海",
                "fruit": [],
                "stationery": [{
                        "sname": "钢笔",
                        "snum": 5
                    },
                    {
                        "sname": "毛笔",
                        "snum": 4
                    }
                ]
            },
            {
                "id": "1548208889319",
                "area": "上海",
                "fruit": [{
                    "fname":"橘子",
                    "fnum": 3
                }
                ],
                "stationery": [{
                        "sname": "钢笔",
                        "snum": 1
                    },
                    {
                        "sname": "毛笔",
                        "snum": 9
                    }
                ]
            }
        ];

var b = [
        {
            "id": "1548208889389",
            "type": '水果',
            "name": '苹果',
            "feature": '又圆又甜'
        },
        {
            "id": "1548208889387",
            "type": '水果',
            "name": '橘子',
            "feature": '又圆又酸'
        },
        {
            "id": "1548208889317",
            "type": '文具',
            "name": '毛笔',
            "feature": '流畅'
        },
        {
            "id": "1548208889387",
            "type": '文具',
            "name": '钢笔',
            "feature": '帅气'
        }
        ];

图片说明

  • 写回答

3条回答

  • 天际的海浪 2019-01-30 16:25
    关注

    你的b对象中type属性有重名。我改变了一下

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    <script>
    var a = [{
                    "id": "1548208772510",
                    "area": "上海",
                    "fruit": [{
                        "fname": "苹果",
                        "fnum": 4
                    }],
                    "stationery": [],
                },
                {
                    "id": "1548208889319",
                    "area": "上海",
                    "fruit": [],
                    "stationery": [{
                            "sname": "钢笔",
                            "snum": 5
                        },
                        {
                            "sname": "毛笔",
                            "snum": 4
                        }
                    ]
                },
                {
                    "id": "1548208889319",
                    "area": "上海",
                    "fruit": [{
                        "fname":"橘子",
                        "fnum": 3
                    }
                    ],
                    "stationery": [{
                            "sname": "钢笔",
                            "snum": 1
                        },
                        {
                            "sname": "毛笔",
                            "snum": 9
                        }
                    ]
                }
            ];
    
    var b = [
            {
                "id": "1548208889389",
                "type": '水果',
                "name": '苹果',
                "feature": '又圆又甜'
            },
            {
                "id": "1548208889387",
                "type": '水果',
                "name": '橘子',
                "feature": '又圆又酸'
            },
            {
                "id": "1548208889317",
                "type": '文具',
                "name": '毛笔',
                "feature": '流畅'
            },
            {
                "id": "1548208889387",
                "type": '文具',
                "name": '钢笔',
                "feature": '帅气'
            }
        ];
    </script>
    
    <table border="1">
        <tr>
            <th>类型</th>
            <th>名称</th>
            <th>数量</th>
            <th>特征</th>
        </tr>
    <script type="text/javascript">
    var numbers = {};
    a.forEach(function(n1){
        n1.fruit.forEach(function(n2){
            numbers[n2.fname] = (numbers[n2.fname]||0) + n2.fnum;
        });
        n1.stationery.forEach(function(n2){
            numbers[n2.sname] = (numbers[n2.sname]||0) + n2.snum;
        });
    });
    b.forEach(function(obj){
        document.write('<tr><td>'+obj.type+'</td><td>'+obj.name+'</td><td>'+numbers[obj.name]+'</td><td>'+obj.feature+'</td></tr>');
    });
    </script>
    </table>
    
    </html>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能