【发布时间】:2022-01-06 06:40:35
【问题描述】:
如果已经有这样的问题,我想提前道歉,但我已经搜索了一整天,我真的可以找到任何东西。
我调用了一个返回响应的 api。然后我只得到我需要的详细信息/数据,目前有一个带有这个示例值的 json 文件:
{
"total": 563,
"shipping_fee": 58,
"e_charges": ???,
"order_items": [
{
"item_id": 6291020872,
"quantity": 1,
"price": 88,
"total": 88
},
{
"item_id": 7755274567,
"quantity": 1,
"price": 150,
"total": 150
},
{
"item_id": 7980571205,
"quantity": 1,
"price": 45,
"total": 45
},
{
"item_id": 12612977930,
"quantity": 1,
"price": 280,
"total": 280
}
]
}, ... {} {} {}....
我的问题是,我需要在order_items [] 中获得所有total 的总和,然后,我需要添加shipping_fee 并获得两组百分比
- 10%
- 8%
请注意,我在运行时获取值。
const resDetails = await request.post(baseURL, {
data: viewData
});
info = await JSON.parse(JSON.stringify(await resDetails.json()));
这是 json 文件的来源:
orders = await info.data.orders.map((x) => (total: x.order_items.map(y => Number(y.order_price) * y.amount).reduce((total, y) => y+total),
shipping_fee : Number(x.shipping_fee),
e_charges: Number(Number((x.order_items.map(y=> Number(y.order_price) * y.amount).reduce((total, y) => Number(y+total)) + Number(x.shipping_fee)) * 0.1).toFixed()),
order_items: x.order_items.map((y) => ({
item_id : y.item_id,
quantity: y.amount,
price: Number(y.order_price),
total: Number(y.order_price) * y.amount)}))
我能够得到 10%,但我的主要问题是在不做映射的情况下添加另外 8%,减少并再次添加 shipping_fee。
Number(Number((x.order_items.map(y=> Number(y.order_price) * y.amount).reduce((total, y) => Number(y+total)) + Number(x.shipping_fee)) * 0.1).toFixed())
我对 javascript/typescript 世界还很陌生。我希望有人可以帮助我找到一种更优化的方式来实现我所需要的。谢谢。
【问题讨论】:
-
我相信以上是供您处理的输入。我看到
shipping_fee和e_charges(带有??)已经添加。你能把结构分开吗:你得到什么作为输入和你想要什么作为输出? -
@RiteshJagga 我正在调用一个返回 json 的 api。我需要获取这些详细信息并将其放在仅包含我需要的数据的 json 文件中。上面的 json 文件已经是从响应中实际提取的。
标签: javascript json typescript javascript-objects