json - 如何添加从 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>
解决方案
您的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;
}
}
推荐阅读
- javascript - 使用 Javascript 在调整大小时移动 DOM 中的元素
- firebase - 如何处理 Firestore 最大文档大小?
- php - PHP递归未正确更改数组中的值
- r - 如何使用 R 中全局环境中定义的函数访问函数环境中的元素
- php - 输出当前子域对应的数据
- c# - NullReference Exception“对象引用未设置为对象的实例”在 C#
- linux - 如何使用 mmu_notifier 范围事件
- python - 使用 monkeypatch 向函数添加额外步骤以进行测试
- sql - 生成uuid,然后从另一个表插入数据
- rust - Rust actix-web 中间件修改请求数据