Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无重复项的javascript新数组_Javascript_Reactjs_Use Effect_Use State - Fatal编程技术网

无重复项的javascript新数组

无重复项的javascript新数组,javascript,reactjs,use-effect,use-state,Javascript,Reactjs,Use Effect,Use State,嗯。。我已经尝试了一些事情,但无法让这个工作。。。我知道这应该比我现在做的要简单 我想创建一个没有重复项的数组。你能帮我吗 useEffect(() => { allBands.forEach(band => { if(!availableGenres.includes(band.bandGenre)){ setAvailableGenres(genres => [...genres, band.bandGenre])

嗯。。我已经尝试了一些事情,但无法让这个工作。。。我知道这应该比我现在做的要简单

我想创建一个没有重复项的数组。你能帮我吗

useEffect(() => {
    allBands.forEach(band => {
        if(!availableGenres.includes(band.bandGenre)){
            setAvailableGenres(genres => [...genres, band.bandGenre])  
        }
    })
}, [allBands])

我可能建议使用内置的
Set
对象来跟踪独特的类型。一旦你的
集合
拥有了所有的类型,你就可以使用扩展操作符(
)将其转换回数组并设置可用的类型

useffect(()=>{
常量类型=新集合();
allBands.forEach(band=>{
风格。添加(乐队。乐队风格);
})
setAvailableGenres([…流派]);
},[所有频带])

我可能建议使用内置的
Set
对象来跟踪独特的类型。一旦你的
集合
拥有了所有的类型,你就可以使用扩展操作符(
)将其转换回数组并设置可用的类型

useffect(()=>{
常量类型=新集合();
allBands.forEach(band=>{
风格。添加(乐队。乐队风格);
})
setAvailableGenres([…流派]);
},[所有频带])

如果我没有误解您的数据结构,您可以试试这个

useEffect(() => {
  setAvailableGenres(genres => [
    ...genres, 
    ...allBands.map(band => band.bandGenre).filter(bandGenre => !genres.includes(bandGenre))
])}, [allBands])

如果我没有误解您的数据结构,您可以试试这个

useEffect(() => {
  setAvailableGenres(genres => [
    ...genres, 
    ...allBands.map(band => band.bandGenre).filter(bandGenre => !genres.includes(bandGenre))
])}, [allBands])

请提供
所有波段
流派
可用频道
好吗?我们不知道您使用的是什么结构。下面的答案有效——但我很好奇您是否有其他想法。allBands是一个对象数组,每个对象都有一个BandGene。我使用forEach()方法从allBands数组中的每个对象提取流派availableGenres和setAvailableGenres是react中useState的一部分,我在其中存储提取的流派。”“流派”是状态的更新程序。谢谢你的回复!请提供
所有波段
流派
可用频道
好吗?我们不知道您使用的是什么结构。下面的答案有效——但我很好奇您是否有其他想法。allBands是一个对象数组,每个对象都有一个BandGene。我使用forEach()方法从allBands数组中的每个对象提取流派availableGenres和setAvailableGenres是react中useState的一部分,我在其中存储提取的流派。”“流派”是状态的更新程序。谢谢你的回复!哇!我从没听说过这个。它起作用了我现在正在读关于它的文章——我看到它会自动检查以确保每个值都是唯一的?使用new Set()有什么缺点吗?非常感谢你给我看这个。一个缺点是
Set
s是无序的。哇!我从没听说过这个。它起作用了我现在正在读关于它的文章——我看到它会自动检查以确保每个值都是唯一的?使用new Set()有什么缺点吗?非常感谢您给我看这个。一个缺点是
Set
s是无序的。