gpt4 book ai didi

javascript - 根据另一个对象的 id 列出数组中的产品

转载 作者:行者123 更新时间:2023-11-28 13:06:57 25 4
gpt4 key购买 nike

我有数组

[
{
"id": "1",
"Name": "Name 1",
"Price": 10,
"inventory": 1,
"date_added": 1496757350
},
{
"id": "2",
"Name": "Name 2",
"Price": 40,
"inventory": 1,
"date_added": 1496757290
},
...
]

和对象

{
'1':2,
'2':15
'10':5
}

像这样。因此第一个包含产品,该对象包含产品的 id(键)以及它已添加到购物车的次数(值)。我想要实现的是,基于该对象,在另一个对象数组中基本上列出产品。因此,在本例中,该列表中将包含 3 个产品。我在这里有点迷失......减少,过滤,映射......我应该如何进行?谢谢

最佳答案

您可以使用reduce按id制作产品 map :

{ 
id: { /* ... product */ }
}

您可以使用 Object.keysmap 迭代购物车中的 ID:

Object.keys(cart).map(id => productMap[id])

这可确保您仅循环浏览一次产品列表,而不是循环浏览购物车中的每个商品。

另请注意,如果您向我们展示您所做的尝试,您可能会从您的问题中得到更多信息。您知道 reducemap 的作用吗?

const products = [
{
"id": "1",
"Name": "Name 1",
"Price": 10,
"inventory": 1,
"date_added": 1496757350
},
{
"id": "2",
"Name": "Name 2",
"Price": 40,
"inventory": 1,
"date_added": 1496757290
},
{
"id": "10",
"Name": "Name 10",
"Price": 40,
"inventory": 1,
"date_added": 1496757290
}
]


const cart = {
"1": 2,
"2": 15,
"10": 5
};

const productsById = products
.reduce((map, prod) => Object.assign(map, { [prod.id]: prod }), {});

const list =
Object
.keys(cart)
// Here, you can make any combination you like
// since both data are retrievable by id

// Only products:
//.map(id => productsById[id]);

// Combination
.map(id => ({ product: productsById[id], quantity: cart[id] }));

console.log(list);

关于javascript - 根据另一个对象的 id 列出数组中的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com