【发布时间】:2021-07-29 14:49:41
【问题描述】:
我在使用地图和条件时遇到了一个问题,基本上如示例所示,我有两个对象数组,我需要根据对象的两个属性来区分:location_id 和 location_id。
const addedItems = [
{
"item_variation_id": "itemvar_QQWn8cQxq7TnB6",
"quantity": 5,
"location_id": "loc_r91C120vrwlReF",
"current_stock": 0,
"action": "add_stock",
},
{
"item_variation_id": "itemvar_QQWn8cQxq7TnB6",
"quantity": 8,
"location_id": "loc_5MHY8nXyvSIqh2",
"current_stock": -2,
"action": "add_stock",
},
{
"item_variation_id": "itemvar_QQWn8cQxq7TnB6",
"quantity": 15,
"location_id": "loc_5BpxGVWA9g09vf",
"current_stock": 0,
"action": "add_stock",
}
];
const preItems = [
{
"item_variation_id": "itemvar_O49yq8yCDC2v1N",
"quantity": null,
"location_id": "loc_r91C120vrwlReF",
"current_stock": 59,
"action": "",
},
{
"item_variation_id": "itemvar_O49yq8yCDC2v1N",
"quantity": null,
"location_id": "loc_5MHY8nXyvSIqh2",
"current_stock": 8,
"action": "",
},
{
"item_variation_id": "itemvar_O49yq8yCDC2v1N",
"quantity": null,
"location_id": "loc_5BpxGVWA9g09vf",
"current_stock": 1,
"action": "",
},
{
"item_variation_id": "itemvar_duW8Yhhd4aT1iF",
"quantity": null,
"location_id": "loc_r91C120vrwlReF",
"current_stock": 27,
"action": "",
},
{
"item_variation_id": "itemvar_duW8Yhhd4aT1iF",
"quantity": null,
"location_id": "loc_5MHY8nXyvSIqh2",
"current_stock": 0,
"action": "",
},
{
"item_variation_id": "itemvar_duW8Yhhd4aT1iF",
"quantity": null,
"location_id": "loc_5BpxGVWA9g09vf",
"current_stock": -4,
"action": "",
},
{
"item_variation_id": "itemvar_QQWn8cQxq7TnB6",
"quantity": 5,
"location_id": "loc_r91C120vrwlReF",
"current_stock": 0,
"action": "add_stock",
},
{
"item_variation_id": "itemvar_QQWn8cQxq7TnB6",
"quantity": null,
"location_id": "loc_5MHY8nXyvSIqh2",
"current_stock": -2,
"action": "",
},
{
"item_variation_id": "itemvar_QQWn8cQxq7TnB6",
"quantity": null,
"location_id": "loc_5BpxGVWA9g09vf",
"current_stock": 0,
"action": "",
},
{
"item_variation_id": "itemvar_YASfOt2B6B4ixE",
"quantity": null,
"location_id": "loc_r91C120vrwlReF",
"current_stock": 0,
"action": "",
}
]
const findItem = (id) => addedItems.find( itemData => itemData.item_variation_id === id )
const updatedItems = [...preItems.map( item =>
( item.item_variation_id === findItem(item.item_variation_id)?.item_variation_id &&
item.location_id === findItem(item.item_variation_id)?.location_id
) ? findItem(item.item_variation_id) : item
) ]
console.log(updatedItems)
总之,我想要得到的是,
first: compare the two arrays (addeedItems and preItems)
second: match these keys while iterating: item_variation_id and location_id
third: if those two match values(item_variation_id and location_id) matches while iterating, remove the item from preItem and add the item from addedItems
总而言之,我的函数 updatedItems 只删除了一项,预期的输出应该移动 3 项。所以输出将是 3 个值将更新为各自的数量
提前感谢您的帮助
【问题讨论】:
-
if those two match, remove the item from preItem and add the item from addedItems这个要求不清楚 -
基本上如果 item_variation_id 和 location_id 匹配,我需要将项目从 preItems 移动并将项目从 addeedItems 添加到 preItems
标签: javascript arrays sorting dictionary logic