我有一系列购物车。我想更新请求对象中的产品数量。即
cart: [
{
quantity: 2,
_id: 60757fdca818d96ed87c852e,
productID: 101,
vendorID: 60642991015028ba0a6ce72c
},
{
quantity: 2,
_id: 607584b4a818d96ed87c852f,
productID: 102,
vendorID: 60642991015028ba0a6ce72c
}
]
我有一系列产品 ID 和数量,例如:
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
}
]
这可能的逻辑是什么?
答案 0 :(得分:0)
所以要更新上一个。状态数组,您可以首先遍历上一个。 state 然后逐项运行一个函数,该函数遍历包含更新值的新数组,并找到指向 prev 内部的特定项。项目的状态并分别更新它们。在这里,我使用数组的 find 函数,.find()
循环遍历更新值的数组,如果找到某些内容,则返回找到的对象,否则返回 undefined
。
所以,我认为这可能对您有所帮助:
/* 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
变量应包含具有更新值的数组。
答案 1 :(得分:0)
我找到了解决方案:
updatedValues.map((product) => {
cart.find((item) => {
if (item.productID === product.productID) {
item.quantity = product.quantity;
}
});
});
有没有其他优化的方法来获得它?