为何我的for循环无法正常运行,变量puncCount始终为0?
嘿,很高兴看到你在Stack Overflow的第一篇帖子!提前给你点个赞,能自己动手写代码尝试解决问题已经很棒啦~咱们来看看为什么你的统计结果一直是0。
问题根源
你的代码思路其实没问题:把文本拆成字符数组,然后遍历计数。但关键错误出在循环的判断条件里——你拿循环的索引值i和.、!做比较了!i是数字(比如0、1、2...),永远不可能等于这两个字符,所以判断条件永远不成立,puncCount自然一直加不上数值。
修正后的代码
我们只需要把判断的对象改成当前循环到的字符storySigns[i]就可以了:
const storySigns = story.split(''); let puncCount = 0; for (let i = 0; i < storySigns.length; i++) { // 这里改成拿当前数组元素比较,而不是索引i if (storySigns[i] === '.' || storySigns[i] === '!') { puncCount += 1; } };
更简洁的写法(可选)
如果你想让代码更简洁,也可以用数组的reduce方法来实现,一行就能搞定:
const puncCount = story.split('').reduce((total, char) => { return (char === '.' || char === '!') ? total + 1 : total; }, 0);
这样修改后,就能正确统计文本中句号和感叹号的数量啦~
内容的提问来源于stack exchange,提问作者Maurice Markslag
相关产品推荐
相关产品推荐

