Javascript 如何通过数组循环并使用映射向项添加数字

Javascript 如何通过数组循环并使用映射向项添加数字,javascript,reactjs,frontend,Javascript,Reactjs,Frontend,我尝试在react中循环一个数组,并尝试使用我创建的“handleplus”函数向“mktratedelta”的值添加1(或任何其他值)。我还创建了一个按钮,将此函数称为“handleplus”。但每当尝试点击按钮时,字段中就会出现“NaN”值。 我如何解决这个问题,这是正确的方法吗 function TableExampleStriped() { const [marketEstimateDataBCAssets, setmarketEstimateData] = useState([

我尝试在react中循环一个数组,并尝试使用我创建的“handleplus”函数向“mktratedelta”的值添加1(或任何其他值)。我还创建了一个按钮,将此函数称为“handleplus”。但每当尝试点击按钮时,字段中就会出现“NaN”值。 我如何解决这个问题,这是正确的方法吗

function TableExampleStriped() {
  const [marketEstimateDataBCAssets, setmarketEstimateData] = useState([
    {
      name: "BcLombard",
      prevgroupinputrate: 0.01,
      currgroupinputrate: 12.0,
      mktratedelta: 4.0,
      mktrateestimate: 20.0
    },
    {
      name: "BcOtherSecured",
      prevgroupinputrate: 0.01,
      currgroupinputrate: 17.0,
      mktratedelta: 3.0,
      mktrateestimate: 10.0
    },
    {
      name: "BcUnsecured",
      prevgroupinputrate: 0.01,
      currgroupinputrate: 7.0,
      mktratedelta: 2.0,
      mktrateestimate: 10.0
    }
  ]);

  const handleChange = item => e => {
    const newArr = marketEstimateDataBCAssets.map(el => {
      if (el.name === item.name) {
        return {
          ...el,
          mktratedelta: parseFloat(e.target.value),
          mktrateestimate: (
            parseFloat(e.target.value) + item.currgroupinputrate
          ).toFixed(2)
        };
      }
      return el;
    });

    return setmarketEstimateData([...newArr]);
  };

  const handleplus = item => e => {
    const newArr = marketEstimateDataBCAssets.map(el => {
      if (el.name === item.name) {
        return {
          ...el,
          mktratedelta: parseFloat(e.target.value) + 1.0
        };
      }
      return el;
    });

    return setmarketEstimateData([...newArr]);
  };

 <Table.Cell>
                {marketEstimateDataBCAssets.map(item => {
                  if (item.name === "BcOtherSecured") {
                    return <button onClick={handleplus(item)} />;
                  }
                })}
 </Table.Cell>

<Table.Cell>
                {marketEstimateDataBCAssets.map(item => {
                  if (item.name === "BcOtherSecured") {
                    return (
                      <input
                        value={item.mktratedelta}
                        onChange={handleChange(item)}
                      />
                    );
                  }
                })}
</Table.Cell>

函数表ExampleStriped(){
常量[MarketEstimateDataCassets,setmarketEstimateData]=useState([
{
姓名:“b伦巴第”,
PrevGroupInput:0.01,
当前组输入:12.0,
mktratedelta:4.0,
MktrateeEstimate:20.0
},
{
名称:“BcOtherSecured”,
PrevGroupInput:0.01,
当前组输入:17.0,
mktratedelta:3.0,
MktrateeEstimate:10.0
},
{
名称:“BCN”,
PrevGroupInput:0.01,
当前组输入:7.0,
mktratedelta:2.0,
MktrateeEstimate:10.0
}
]);
const handleChange=item=>e=>{
const newArr=marketestimatedatacassets.map(el=>{
如果(el.name==item.name){
返回{
…呃,
mktratedelta:parseFloat(即target.value),
Mktrate估计:(
parseFloat(e.target.value)+item.currGroupInput
).toFixed(2)
};
}
返回el;
});
返回setmarketEstimateData([…newArr]);
};
常量handleplus=项目=>e=>{
const newArr=marketestimatedatacassets.map(el=>{
如果(el.name==item.name){
返回{
…呃,
mktratedelta:parseFloat(e.target.value)+1.0
};
}
返回el;
});
返回setmarketEstimateData([…newArr]);
};
{marketestimatedatacassets.map(项=>{
如果(item.name==“BcOtherSecured”){
返回;
}
})}
{marketestimatedatacassets.map(项=>{
如果(item.name==“BcOtherSecured”){
返回(
);
}
})}

要在react的onClick事件中传递数据,需要使用箭头功能

如下

return <button onClick={(e) => this.handleplus(item)} />;
返回此.handleplus(item)}/>;

请参阅react文档以处理事件

我在按钮上没有看到与输入标记类似的任何值,因此每当它尝试在按钮上检查e.target.value时,单击它将给出一个未定义的值,如果我们执行parseFloat(未定义),它将返回NaN。当您在onclick中传递项时,可以从中获取所需的值

我正在使用下一个