条件过滤在 React JS 中不起作用
conditional filtering is not working in react js
我正在尝试使用 2 个条件进行过滤。我的数据库中有 3 个值,分别是 Delivery、Take Away 和 Both。这两个值都表示交付和带走。因此,我试图在用户搜索具有交付价值的数据时进行过滤,它会 return 数据,但我也希望哪些数据具有两个值,它也会 return 那些数据。
所以基本上当用户选择交付时,那些具有交付 属性 的数据将从数组中 return,并且具有这两个属性的数据也会 return。
我正在这样尝试,但我得到的是一个空数组
updatedList.filter(
(item) =>
item.additional.itemPick === "Both" &&
item.additional.itemPick.toLowerCase() === pickItem.toLowerCase()
);
我的数据
[
{
"_id": "62526de0b2540137f2a77b59",
"additional": {
"category": "Chinese",
"rating": 9,
"itemPick": "Both",
"offer": 6
},
"name": "Consuelo Cameron"
},
{
"_id": "62526de0d8ffb784e15ccc9e",
"additional": {
"category": "Italian",
"rating": 6,
"itemPick": "Both",
"offer": 13
},
"name": "Susan Palmer"
},
{
"_id": "62526de0de91084a9c71b50e",
"additional": {
"category": "Japanese",
"rating": 7,
"itemPick": "Take Away",
"offer": 12
},
"name": "Meghan Mooney"
},
{
"_id": "62526de0c3bdf5932586c610",
"additional": {
"category": "Vegitarian",
"rating": 5,
"itemPick": "Take Away",
"offer": 10
},
"name": "Jody Lopez"
},
{
"_id": "62526de0974a41b4cbd6827a",
"additional": {
"category": "Vegitarian",
"rating": 6,
"itemPick": "Both",
"offer": 5
},
"name": "Kirsten Petersen"
},
{
"_id": "62526de0e56f5f3c7d00ae47",
"additional": {
"category": "Italian",
"rating": 10,
"itemPick": "Both",
"offer": 9
},
"name": "Garrison Mcbride"
},
{
"_id": "62526de0a5c051722016c558",
"additional": {
"category": "Vegitarian",
"rating": 8,
"itemPick": "Delivery",
"offer": 9
},
"name": "Jo Skinner"
}
]
用户选择交付时的预期输出
[
{
"_id": "62526de0b2540137f2a77b59",
"additional": {
"category": "Chinese",
"rating": 9,
"itemPick": "Both",
"offer": 6
},
"name": "Consuelo Cameron"
},
{
"_id": "62526de0d8ffb784e15ccc9e",
"additional": {
"category": "Italian",
"rating": 6,
"itemPick": "Both",
"offer": 13
},
"name": "Susan Palmer"
},
{
"_id": "62526de0974a41b4cbd6827a",
"additional": {
"category": "Vegitarian",
"rating": 6,
"itemPick": "Both",
"offer": 5
},
"name": "Kirsten Petersen"
},
{
"_id": "62526de0e56f5f3c7d00ae47",
"additional": {
"category": "Italian",
"rating": 10,
"itemPick": "Both",
"offer": 9
},
"name": "Garrison Mcbride"
},
{
"_id": "62526de0a5c051722016c558",
"additional": {
"category": "Vegitarian",
"rating": 8,
"itemPick": "Delivery",
"offer": 9
},
"name": "Jo Skinner"
}
]
试试这个!
const filterArray = (updatedListArray, itemPick) => {
return updatedListArray.filter(
(item) =>
item.additional.itemPick === "Both" ||
item.additional.itemPick === itemPick
);
};
const updatedList = [
{
_id: "62526de0d8ffb784e15ccc9e",
additional: {
category: "Italian",
rating: 6,
itemPick: "Both",
offer: 13,
},
name: "Susan Palmer",
},
// {... rest of it}
];
console.log("filter array with Delivery");
console.log(filterArray(updatedList, "Delivery"));
console.log("filter array with Take Away");
console.log(filterArray(updatedList, "Take Away"));
我正在尝试使用 2 个条件进行过滤。我的数据库中有 3 个值,分别是 Delivery、Take Away 和 Both。这两个值都表示交付和带走。因此,我试图在用户搜索具有交付价值的数据时进行过滤,它会 return 数据,但我也希望哪些数据具有两个值,它也会 return 那些数据。
所以基本上当用户选择交付时,那些具有交付 属性 的数据将从数组中 return,并且具有这两个属性的数据也会 return。
我正在这样尝试,但我得到的是一个空数组
updatedList.filter(
(item) =>
item.additional.itemPick === "Both" &&
item.additional.itemPick.toLowerCase() === pickItem.toLowerCase()
);
我的数据
[
{
"_id": "62526de0b2540137f2a77b59",
"additional": {
"category": "Chinese",
"rating": 9,
"itemPick": "Both",
"offer": 6
},
"name": "Consuelo Cameron"
},
{
"_id": "62526de0d8ffb784e15ccc9e",
"additional": {
"category": "Italian",
"rating": 6,
"itemPick": "Both",
"offer": 13
},
"name": "Susan Palmer"
},
{
"_id": "62526de0de91084a9c71b50e",
"additional": {
"category": "Japanese",
"rating": 7,
"itemPick": "Take Away",
"offer": 12
},
"name": "Meghan Mooney"
},
{
"_id": "62526de0c3bdf5932586c610",
"additional": {
"category": "Vegitarian",
"rating": 5,
"itemPick": "Take Away",
"offer": 10
},
"name": "Jody Lopez"
},
{
"_id": "62526de0974a41b4cbd6827a",
"additional": {
"category": "Vegitarian",
"rating": 6,
"itemPick": "Both",
"offer": 5
},
"name": "Kirsten Petersen"
},
{
"_id": "62526de0e56f5f3c7d00ae47",
"additional": {
"category": "Italian",
"rating": 10,
"itemPick": "Both",
"offer": 9
},
"name": "Garrison Mcbride"
},
{
"_id": "62526de0a5c051722016c558",
"additional": {
"category": "Vegitarian",
"rating": 8,
"itemPick": "Delivery",
"offer": 9
},
"name": "Jo Skinner"
}
]
用户选择交付时的预期输出
[
{
"_id": "62526de0b2540137f2a77b59",
"additional": {
"category": "Chinese",
"rating": 9,
"itemPick": "Both",
"offer": 6
},
"name": "Consuelo Cameron"
},
{
"_id": "62526de0d8ffb784e15ccc9e",
"additional": {
"category": "Italian",
"rating": 6,
"itemPick": "Both",
"offer": 13
},
"name": "Susan Palmer"
},
{
"_id": "62526de0974a41b4cbd6827a",
"additional": {
"category": "Vegitarian",
"rating": 6,
"itemPick": "Both",
"offer": 5
},
"name": "Kirsten Petersen"
},
{
"_id": "62526de0e56f5f3c7d00ae47",
"additional": {
"category": "Italian",
"rating": 10,
"itemPick": "Both",
"offer": 9
},
"name": "Garrison Mcbride"
},
{
"_id": "62526de0a5c051722016c558",
"additional": {
"category": "Vegitarian",
"rating": 8,
"itemPick": "Delivery",
"offer": 9
},
"name": "Jo Skinner"
}
]
试试这个!
const filterArray = (updatedListArray, itemPick) => {
return updatedListArray.filter(
(item) =>
item.additional.itemPick === "Both" ||
item.additional.itemPick === itemPick
);
};
const updatedList = [
{
_id: "62526de0d8ffb784e15ccc9e",
additional: {
category: "Italian",
rating: 6,
itemPick: "Both",
offer: 13,
},
name: "Susan Palmer",
},
// {... rest of it}
];
console.log("filter array with Delivery");
console.log(filterArray(updatedList, "Delivery"));
console.log("filter array with Take Away");
console.log(filterArray(updatedList, "Take Away"));