【发布时间】:2021-09-11 01:27:15
【问题描述】:
基本上我有一个对象,其中有一个数组,并且我有这个对象的一个高级数组。
对象如下。
category: {
name,
items: [{
id,
name,
price,
image,
}],
}
这个数组看起来像:
[{
name: "Category 1",
items: [{
id: 1,
name: "Item 1 of category 1",
price: 12.34,
image: "/path/to/image",
},
{
id: 2,
name: "Item 2 of category 1",
price: 56.78,
image: "/path/to/image2",
}]
},
{
name: "Category 2",
items: [{
id: 3,
name: "Item 1 of category 2",
price: 87.65,
image: "/path/to/image3",
},
{
id: 4,
name: "Item 2 of category 1",
price: 43.21,
image: "/path/to/image4",
}]
}]
我的问题是,可以搜索id,因为我有一个包含所有这些数据的数组。
目前我正在使用以下代码解决问题:
var price = 0;
const menu = [];
state.user.menu.map((item, k) => {
item.category.items.forEach((itm) => menu.push(itm));
return null;
});
state.user.items.forEach((item) => {
price += menu.filter((itm) => itm.id === item.id)[0].price * item.quantity;
});
这基本上复制了对象内部数组中的每个项目并忽略了类别名称,所以我只有一个大数组。
对于我现在需要的,我需要将每个项目与类别名称相关联,所以,我不能像现在这样。
基本上,我有一个Ids 列表,我需要将它们与该数组中的相应类别一起显示。
(Items to search)
[{
timestamp: "123456",
userid: "123456",
...
id: 1,
price: 12.34,
},
{
timestamp: "123456",
userid: "123456",
...
id: 3,
price: 87.65,
},
{
timestamp: "123456",
userid: "123456",
...
id: 4,
price: 43.21,
}]
(Expected Result)
[{
name: "Category 1",
items: [{
id: 1,
name: "Item 1 of category 1",
price: 12.34,
image: "/path/to/image",
}]
},
{
name: "Category 2",
items: [{
id: 3,
name: "Item 1 of category 2",
price: 87.65,
image: "/path/to/image3",
},
{
id: 4,
name: "Item 2 of category 1",
price: 43.21,
image: "/path/to/image4",
}]
}]
欢迎任何建议,谢谢。
【问题讨论】:
-
请添加一些数据和想要的结果。
-
我已经更新了问题
-
.map用于返回转换后的数据,但您将其用于state.user.menu的副作用。这可能会让其他开发人员感到困惑。 Array.protoype.map -> map() 方法创建一个新数组,其中填充了对调用数组中的每个元素调用提供的函数的结果。
标签: javascript arrays reactjs javascript-objects