为了账号安全,请及时绑定邮箱和手机立即绑定

Reactjs:如何检查每个数组索引是否包含值?

Reactjs:如何检查每个数组索引是否包含值?

呼唤远方 2022-12-09 15:38:06
这是我的数组:  const [arr, setArr] = React.useState([   {     "id": 1,     "barcode": "8851907264888",     "qty" : 1   },    {     "id": 2,     "barcode": "8857124022072",     "qty": 1   }  ]);这是我的功能:  const hasBarcode = (arr, barcode) => arr.some(el => el.barcode === barcode);  const handleUpdate=()=>{   let x = 8851907264888;   for(let i = 0;i < arr.length;i++){     if(hasBarcode(arr[i], x) == true){        let newArr = [...arr];        newArr[i].qty = newArr[i].qty + 1;        setArr(newArr);              }    }  }我的问题是for loop,我想检查每个数组索引,如果每个索引都包含相同的barcode内容x,我想qty + 1为该特定索引添加。但这里显示错误为Cannot read property 'some' of undefined
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您将对象传递给 hasBarcode() 而不是数组的代码中的错误您也可以这样做


  const handleUpdate = () => {

    let x = 8851907264888;

    let newArr = arr.map((obj) => {

      if (obj.barcode && obj.barcode == x) {

        obj.qty = obj.qty + 1;

      }

      return obj;

    });

    setArr(newArr);

  };


查看完整回答
反对 回复 2022-12-09
?
互换的青春

TA贡献1797条经验 获得超6个赞

  const hasBarcode = (arr, barcode) => arr.some(el => el.barcode === barcode);


  const handleUpdate=()=>{

   let x = 8851907264888;

   for(let i = 0;i < arr.length;i++){

     if(hasBarcode(arr, x) == true){

        let newArr = [...arr];

        newArr[i].qty = newArr[i].qty + 1;

        setArr(newArr);       

       }

    }

  }


查看完整回答
反对 回复 2022-12-09
?
侃侃无极

TA贡献2051条经验 获得超10个赞

  const hasBarcode = (arr, barcode) => arr.some(el => el.barcode === barcode);


  const handleUpdate=()=>{

   let x = 8851907264888;

   for(let i = 0;i < arr.length;i++){

     if(hasBarcode(arr, x) == true){

        let newArr = [...arr];

        newArr[i].qty = newArr[i].qty + 1;

        setArr(newArr);       

       }

    }

  }


查看完整回答
反对 回复 2022-12-09
  • 3 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信