首页 > 解决方案 > 如何根据重量更改价格输入已写入输入(循环)

问题描述

我做了一个表单输入,接受价格区间,根据重量改变包裹价格。可以看到有两种说法。第一个用于区间,第二个用于 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>

标签: javascriptreactjs

解决方案


推荐阅读