删除数组中的特定值并添加新的更新值

时间:2019-06-22 02:39:27

标签: reactjs

我试图在添加或推送另一个更新值之前删除数组中的现有特定值。我的目的是避免对数组重复相同的ID和值。我要实现的是,当onchange触发时,检查该值是否存在于数组中,如果存在,则删除旧值并推送更新值。

  const [array, setnewarray] = useState([]);
     function handlechangeselected(val,id){

       var newarray = array;
       const valueToRemove = id;
       newarray.filter(item => item.id === valueToRemove);

        newarray.push({ value: val, id:id });
       setnewarray(newarray);

  }




  <select                                                                              
   onChange={(e) => handlechangeselected(e.target.value,row.ID)}                                                                                
  >

      <option value="0">0</option>                                                                             
      <option value="1">1</option>                                                                           
      <option value="2">2</option>

  </select>

1 个答案:

答案 0 :(得分:1)

第一个问题是filter不会修改数组,而是返回一个新数组。您没有使用返回的数组,因此newArray不变。

另一个问题是filter过滤掉了从回调中返回 false 的所有值,因此您希望过滤器为所有不返回的项目返回true 匹配valueToRemove(换句话说,用!==代替===)。您还可以使用.concatarray.filter之后进行链接。

在这里,简化一点:

     const [array, setNewArray] = useState([]);

     function handlechangeselected(value, id){
       const newArray = array
         .filter(item => item.id !== id)
         .concat({ value, id });

       setNewArray(newArray);
     }