求助:使用forEach循环判断数组元素是否存在时未得到预期结果的解决方法
问题分析与解决
嗨,别担心,这个问题对编程新手来说太正常了,完全不用不好意思😎!咱们一步步拆解问题所在:
核心问题出在哪?
你写的forEach回调里有两个容易混淆的点:
- 参数名冲突:你外部定义了变量
i=1,但forEach回调的第二个参数你也命名为i,这就导致回调里的i被覆盖成了数组的索引值(从0开始),根本不是你原来定义的1。 - 判断逻辑偏差:你原本想判断数组元素是否等于你指定的
i=1,但实际代码里变成了element === 索引值——比如第一个元素是1,对应索引0,1≠0;第二个元素是2,对应索引1,2≠1……以此类推,自然所有判断都是False。
修正后的代码
把回调里的参数名改成index(避免和外部变量冲突),然后直接拿元素和你定义的i对比就行:
const k = [1,2,3,4,5,6,7,8]; const i = 1; k.forEach((element, index) => { if(element === i){ console.log("TRUE"); } else { console.log("False"); } });
运行这段代码,你就会看到第一个输出是TRUE,剩下的都是False,符合你的预期。
额外小技巧:判断元素是否存在
如果你只是想确认指定元素是否在数组里(而不是挨个输出判断结果),用forEach也可以实现,比如:
const k = [1,2,3,4,5,6,7,8]; const target = 1; let isExist = false; k.forEach(element => { if(element === target){ isExist = true; } }); console.log(isExist ? "目标元素存在!" : "目标元素不存在!");
内容的提问来源于stack exchange,提问作者Indratej Reddy
相关产品推荐
相关产品推荐

