Javascript 包含数组列表的ReactJS筛选器

Javascript 包含数组列表的ReactJS筛选器,javascript,reactjs,Javascript,Reactjs,因此,在上面的代码中,我有nda,它是我正在筛选和映射的对象的数组 然后我还有props.currentFilter,它是一个prop被传递到这个组件中,例如array列表 {nDATA .filter((newData) => newData.titles.includes(props.currentFilter)) .map((value, index) => ( 我在这里要做的是让我的过滤器设置在这里检查props.curr

因此,在上面的代码中,我有
nda
,它是我正在筛选和映射的
对象的
数组

然后我还有
props.currentFilter
,它是一个
prop
被传递到这个组件中,例如
array
列表

 {nDATA
          .filter((newData) => newData.titles.includes(props.currentFilter))
          .map((value, index) => (
    
我在这里要做的是让我的过滤器设置在这里检查
props.currentFilter
中每个数组的
newData.titles
。这样,当我搜索say
Apples
Oranges
Grapes
时,它会检查每个东西,如果它有一个,它就会通过。如果我通过执行
props.currentFilter[0]
将一个字符串传递到includes中,那么我现在的设置工作得非常好,但这对我在这里尝试执行的操作没有任何好处。我一直在尝试测试一些方法来实现这一点,并且一直在努力解决这一问题,非常感谢您提供的任何帮助=D

您可以在筛选方法中使用,以检查您的
道具中是否有一些值。currentFilter
包含在您的
新数据中。标题
数组:

["Apples", "Oranges", "Strawberries", "Grapes"]
您可以在筛选方法中使用来检查
props.currentFilter
中的某些值是否包含在
新数据中。titles
数组:

["Apples", "Oranges", "Strawberries", "Grapes"]

运行此函数的最佳方法是将currentFilter数组转换为一个对象,其中键是过滤词。价值观可以是任何东西

nData.filter(newData => props.currentFilter.includes(newData.titles))
哪个应该返回

let filterObj = props.currentFilter.reduce((acc, cur) => {
 acc[cur] = 1
 return acc
}, {})


然后运行过滤器循环并调用hasOwnProperty方法,该方法返回一个布尔值

filterObj = {
 "apples": 1,
 "oranges": 1,
 "bananas": 1,
}

运行此函数的最佳方法是将currentFilter数组转换为一个对象,其中键是过滤词。价值观可以是任何东西

nData.filter(newData => props.currentFilter.includes(newData.titles))
哪个应该返回

let filterObj = props.currentFilter.reduce((acc, cur) => {
 acc[cur] = 1
 return acc
}, {})


然后运行过滤器循环并调用hasOwnProperty方法,该方法返回一个布尔值

filterObj = {
 "apples": 1,
 "oranges": 1,
 "bananas": 1,
}


newData.titles
是字符串吗?是的,它是字符串如果它是字符串,那么我的答案应该有效。。。如果它是一个数组,那么你可以尝试:
.filter(newData=>props.currentFilter.some(str=>newData.titles.includes(str))
Ah也许它是一个数组,那么我会尝试一下,看起来像是一个数组lol。效果很好,把它作为一个答案发布,我会给你打勾。非常感谢您抽出时间!
newData.titles
是字符串吗?是的,它是字符串如果它是字符串,那么我的答案应该有效。。。如果它是一个数组,那么你可以尝试:
.filter(newData=>props.currentFilter.some(str=>newData.titles.includes(str))
Ah也许它是一个数组,那么我会尝试一下,看起来像是一个数组lol。效果很好,把它作为一个答案发布,我会给你打勾。非常感谢您抽出时间!似乎不工作,但我试图看看,也许我可以看到为什么它不工作lol。而且我修复了洪水,所以它不是那样。它只是回来,因为没有结果似乎不工作,但我试图看看,也许我可以看到为什么它不工作,哈哈。我还修复了洪水,所以它不是那样。如果你只是为了高效的查找而使用对象,那么最好使用a:)@NickParsons谢谢你的提示!JS中的集合和对象有不同的查找运行时吗?它们都应该是相同的,所以你可以期望
.has()
(在集合上)和对象查找都是O(1)。如果你使用一个对象只是为了高效查找,那么最好使用一个:)@NickParsons谢谢你的提示!JS中的集合和对象有不同的查找运行时吗?它们都应该是相同的,因此
.has()
(在集合上)和对象查找都应该是O(1)。