首页 > 解决方案 > Reactjs:如何检查每个包含值的数组索引?

问题描述

这是我的数组:

  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,我想检查每个数组索引,如果每个索引都包含与 相同barcodex我想qty + 1为该特定索引添加。但在这里它显示错误为Cannot read property 'some' of undefined

标签: javascriptarraysreactjssyntax-errortypeerror

解决方案


您将对象传递给 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);
  };

推荐阅读