提问者:小点点

用更新值数组更新对象数组


我有一系列推车。我想更新请求对象中的产品数量。即。

cart: [
    {
      quantity: 2,
      _id: 60757fdca818d96ed87c852e,
      productID: 101,
      vendorID: 60642991015028ba0a6ce72c
    },
    {
      quantity: 2,
      _id: 607584b4a818d96ed87c852f,
      productID: 102,
      vendorID: 60642991015028ba0a6ce72c
    }
  ]

我有一个数组的产品和数量,比如:

updatedValues: [
           { productID:'101', quantity: 3 },
           { productID:'102', quantity: 1 } 
         ]

我想更新它们,如:

cart: [
    {
      quantity: 3,
      _id: 60757fdca818d96ed87c852e,
      productID: 101,
      vendorID: 60642991015028ba0a6ce72c
    },
    {
      quantity: 1,
      _id: 607584b4a818d96ed87c852f,
      productID: 102,
      vendorID: 60642991015028ba0a6ce72c
    }
  ]

这可能的逻辑是什么?


共1个答案

匿名用户

所以要更新一个prev。状态数组,您可以首先循环访问prev。状态,然后逐项运行一个函数,该函数在包含更新值的新数组中迭代,并找到指向Prev中的特定项。项的状态并分别更新它们。这里我使用数组的find函数,.find()在更新值的数组中循环,如果它找到了一些东西,它就返回找到的对象,否则未定义。所以,我想这可能对你有帮助:

  /* Here I'm assuming you already have original array coming from somewhere, inside results
 variable and updationArray represents the array containing updated information **/

const updatedResults = results.map((res)=>(modifyItem(res, updationArray)));

/* This function runs when we run the map function on results item wise **/
const modifyItem = (item, updationArray) => {
  const modifiedResult = updationArray.find(({productID})=> (productID === String(item. productID)));
  if(!modifiedResult)
     return item;
  return { ...item, ...modifiedResult }
}

因此updatedvalues变量应该包含具有更新值的数组。