arrays - 在输入字段中输入数字后,检查该数字是否存在于反应钩子的列表中
问题描述
我正在通过我的项目学习 reactjs 和 react hooks
篮球比赛中每个球员的得分
我希望应用程序执行以下操作:
- 在输入字段中输入一个数字
- 检查该号码是否已存在
- 如果是:将 1、2、3 添加到 totPoints,具体取决于单击的按钮
- 如果否:添加数字和 totPoints = 1,或 torPoints = 2,或 totPoints = 3。取决于单击的按钮
2a) 2b ) 如果否:添加数字和 totPoints = 1,或 totPoints = 2,或 totPoints = 3。取决于单击的按钮
从 youtube 得到想法后,我正在重写我的代码
const [number, setNumber] = useState('');
const [totPoints, setTotPoints] = useState(0);
const [scorers, setScorers] = useState([
{id: nanoid(4), number: 9, totPoints: 99},
{id: nanoid(4), number: 1, totPoints: 11},
{id: nanoid(4), number: 15, totPoints: 9},
]);
const onePointScoredHandler = () => {
const players = [...scorers];
const existingScorer = players.find((player) => player.number === number);
if (existingScorer) {
console.log('exist');
} else {
console.log('new');
}
不幸的是,if(existingScorer)
无法识别列表中已经存在的数字,但console.log ('new')
无论我在输入字段中输入什么数字
解决方案
那是因为你的number
状态是一个字符串,player.number
而是一个数字。您可以使用+
运算符将其转换为数字以正确比较它们:
const existingScorer = players.find((player) => player.number === +number);
推荐阅读
- c++ - 是否可以将“QStringList”转换为“无符号字符”?
- php - How to check if variable is empty, and give back the same flash message with multiple variables
- android - 找不到联系人应用程序的 android.provider.CONTACTS_STRUCTURE 元数据
- javascript - 为什么 moment.unix(0) 返回 1 小时?
- facebook - Facebook SDK for iOS v4.39.0 更新
- r - 如何使分类变量从低到高排序?
- java - Instant.now 等效于 java.util.Date 或 Java 7
- java - 代号一返回上一表单命令错误
- java - 使用外部数据库配置文件创建 maven jar
- .net - 使用 SemaphoreSlim 时线程被中止异常