javascript - 如何根据重量更改价格输入已写入输入(循环)
问题描述
我做了一个表单输入,接受价格区间,根据重量改变包裹价格。可以看到有两种说法。第一个用于区间,第二个用于 weight*price(如果权重在区间内,则第一个起作用,否则第二个函数将权重与给定价格相乘)。
所以第二个条件不成立。算法应该是,如果键入的权重不在低区间(setTariffData 中的 1 和 2. 对象),区间的最大权重为 3,它应该返回最后一个对象的价格,该价格将与给定价格(第三个对象)相乘)。我想问题出在循环内部。
const setTariffData = [
{from_kg: 0,
id: 9,
price: 2,
receiver_station_id: 12,
sender_station_id: 1
to_kg: 1},
{
from_kg: 1,
id: 10,
price: 3,
receiver_station_id: 12,
sender_station_id: 1,
to_kg: 3},
{
from_kg: 3,
id: 13,
price: 1,
receiver_station_id: 12,
sender_station_id: 1,
to_kg: 999999}
]
sender_station_id 和 receiver_station_id 不影响问题
setTariffData.map(t=>{
if (values.weight >= t.from_kg && values.weight <t.to_kg) {
values.amount = t.price;
}
if(t.from_kg > 3){
values.amount = t.price * values.weight;
}
})
这是 Formik 上的输入句柄:
<NumberInput
label="Weight (KQ)"
placeHolder="Weight"
name="weight"
value={values.weight}
error={errors.weight}
onChange={onChange}
onBlur={onBlur}
touched={touched.weight}
/>
<div className='form-control text-success'>{values.amount} AZN</div>
解决方案
推荐阅读
- java - 哪种 MySQL 类型最好存储时间点信息 - Datetime 或 Timestamp
- amazon-web-services - 如何编码 Elastic Beanstalk 使用的 Cloudwatch 警报?
- date - 以不同格式存储的日期
- javascript - Moment.js 使用 Zulu 时间处理 .format() 问题
- apache-spark - 比较架构忽略可为空的
- python - Pandas - groupby 带薪休假(PTO)的“最长”持续时间
- logging - Tensorflow Estimator 打印损失时使用的是什么数据集
- vb.net - 使用 Linq 使用动态键对数据进行分组
- c# - 在 .Net 中使用 SAX 方法打开一个 xls 文件并添加几行(大约 100K)
- ansible - 从自定义位置使用 host_group_vars 插件加载嵌套文件