微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何添加从 forEach 获得的值? 反应

如何解决如何添加从 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","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>

解决方法

您的 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;
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。