首页 > 解决方案 > 如何添加从 forEach 获得的值?(反应)

问题描述

我正在尝试从给我这个 JSON 的 API 调用中提取数据:

JSON数据:

{ "rows": 
    [
        {
            "customer_id": 1,
            "customer_details":
                {
                    "customer_id": 1,
                    "email":"john@mail.com",
                    "first_name":"John",
                    "last_name":"Doe",
                    "phone":"+123456123"
                },
            "order_items":[
                {
                    "name": "random name",
                    "quantity":1
                }
            ]
        },
        {
            "customer_id": 2,
            "customer_details":
                {
                    "customer_id": 2,
                    "email":"johnny@mail.com",
                    "first_name":"Johnny",
                    "last_name":"Silverhand",
                    "phone":"+123456123"
                },
            "order_items":[
                {
                    "name": "random name",
                    "quantity":1
                },
                {
                    "name": "another random name",
                    "quantity":1
                }
            ]
        }
    ]
}

我实际上能够获得数量,但是当数组中有两个或更多对象order_items与客户 2 一样时,我得到的是11如何添加我得到的值?对不起,如果这真的是一个简单的问题,但我真的很困惑。

这是我如何获取它们的代码:

    function getQuantity(qty) {
        if(qty.length === 1) {
            return qty[0].quantity;
        } else {
            let tempArr = [];
            qty.forEach(prod => {
                // console.log(prod.quantity)
                tempArr.push(prod.quantity)
            });
            return tempArr;
        }
    }

我映射使用了我在地图中制作的函数,这是代码的一部分:

{orderList.map((val, key) => {
                                    if (val.status_id !== 5) {
                                        return (
                                            <tr key={key} className='text-center'>
                                                <td className='tdata'>{getQuantity(val.order_items)}</td>

标签: jsonreactjsforeach

解决方案


您的getQuantity函数返回一个数字数组(给定此 json 数据),当您将值设置为时td,如您的示例所示,[1, 1]它将输出“1”“1”,看起来像“11”。

如果你想显示你的值的总和,你可以做这样的事情(尽管可能有更好的方法来对数组中的所有数字求和)

   function getQuantity(qty) {
        if(qty.length === 1) {
            return qty[0].quantity;
        } else {
            let tempVal = 0;
            qty.forEach(prod => {
                tempVal += prod.quantity
            });
            return tempVal;
        }
    }

推荐阅读