过滤数组中的元素
2021-08-26
43
我正在使用 React Native。我有一份食物类别列表:
const categoryData = [
{
id: 1,
name: "Burger",
icon: icons.burger,
},
{
id: 2,
name: "Salat",
icon: icons.salad,
},
{
id: 3,
name: "Drinks",
icon: icons.drinks,
}];
和一家选定的餐厅:
const selectedRestaurant = {
id: 1,
name: "Tom's Burger",
rating: 4.8,
categories: [1, 3],
};
我想要一个数组 offeredCategories ,其中只包含餐厅提供的类别。在这种情况下,只应显示汉堡和饮料类别。
我尝试过滤 categoryData 并使用了以下内容,但它说 includes 不是一个函数。还有其他选择吗?
const offeredCategories = categoryData.filter((item) => item.id.includes(selectedRestaurant.categories))
2个回答
Array
includes
一个特定值,因此是您的
selectedRestaurant.categories
,而不是您的
item.id
const icons = {};
const categoryData = [{
id: 1,
name: "Burger",
icon: icons.burger,
},
{
id: 2,
name: "Salat",
icon: icons.salad,
},
{
id: 3,
name: "Drinks",
icon: icons.drinks,
}
];
const selectedRestaurant = {
id: 1,
name: "Tom's Burger",
rating: 4.8,
categories: [1, 3],
};
const offeredCategories = categoryData.filter((item) =>
selectedRestaurant.categories.includes(item.id)
);
console.log(offeredCategories);
Roko C. Buljan
2021-08-26
此内容取自 MDN Web Docs :
The includes() method determines whether an array includes a certain value among its entries, returning true or false as appropriate.
在您的代码中,您尝试对整数而不是数组使用
includes
方法。
编辑:
这应该允许您过滤掉类别。
const offeredCategories = categoryData.filter((item) => selectedRestaurant.categories.includes(item.id))
唯一的问题是您正在检查一个项目以查看它是否包含一个数组,而 includes 语句正在检查一个数组以查看它是否包含一个项目。
Mal1t1a
2021-08-26