你吃西瓜皮 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 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题