If statement 如何防止在React中的列表中添加重复项?
各位知识渊博、才华横溢的SO会员您好:) 我希望你也能帮我做这件事。我希望做以下工作:If statement 如何防止在React中的列表中添加重复项?,if-statement,react-hooks,If Statement,React Hooks,各位知识渊博、才华横溢的SO会员您好:) 我希望你也能帮我做这件事。我希望做以下工作: 提交时检查项目是否已在列表中 如果是,则显示警报,而不是添加 如果没有,请将该项目添加到列表中 在网上搜索之后,我找到了以下代码 const submitHandler=(e)=>{ e、 预防默认值(); const newScorer=e.target.value; const existingScorer=players.includes(newScorer); if(现有记分员){ log('已在列表
const submitHandler=(e)=>{
e、 预防默认值();
const newScorer=e.target.value;
const existingScorer=players.includes(newScorer);
if(现有记分员){
log('已在列表中!');
}否则{
constnewplayer={id:nanoid(4),numer:number};
setPlayers([…players,newPlayer]);
设置编号(“”);
}
};
问题是它不起作用,即使“newScorer”已经在名单上,他补充道
提前谢谢
问候
Peter根据评论,您想检查
number
是否在players
数组中,以便
const existingScorer = players.find(player => player.nummer === number);
。。。假设
nummer
是正确的属性。感谢Janez的编辑:)无关,但是neePlayer对象的键应该是“number”而不是“nummer”吗?我不明白为什么simpe if/else不起作用,在console.log之后添加一个return,它应该起作用,尽管看起来players
是一个对象数组。但是includes
只是检查其中是否有一个值。另外,number
似乎没有定义,所以很难说你在那里想做什么。谢谢Dan!不幸的是,添加退货没有帮助,仍然不起作用…:-(@Bafsky:yes players是一个对象数组。我是否应该使用``filter()```这个数字已经定义,并且正在工作。我附加了一个github链接:.Maybee如果你看到所有的文件会更容易帮助。非常感谢。现在它按照我的想法/想要的方式工作:在重写代码之后,它突然不起作用:const addHandler=()=>{const existingScorer=players.find((player)=>player.number==number);if(existingScorer){console.log('existing')}else{setPlayers([…players,{id:players.length,number:+number,}])无效的是,即使player号码已经存在,也会用新的id setNumber('')重新输入
为什么你有数字:+number
?这会在将数字添加到列表之前增加数字。只需使用数字:number
。我的错。我想++number
+number
实际上没问题。问题是你在转换之前比较数字,所以它永远找不到匹配的数字。试试这个。。。const existingScorer=players.find((player)=>player.number===+number);