如何遍历随机名称数组并仅打印长度大于5的名称?
问题分析与修复方案
嘿,我一眼就看到问题啦!你的代码逻辑里犯了个小混淆——你在判断循环的索引值i是否大于5,但实际你需要检查的是每个名字的长度是否大于5,这完全不是一回事儿~
为什么原代码没效果?
你的数组randomNames只有4个元素,索引从0到3,所以i的取值永远到不了5,if (i > 5)这个条件永远不会成立,自然不会输出任何内容。
修复后的基础版代码
我们把判断条件改成检查当前名字的长度就行,另外建议给i加上let声明避免全局变量污染:
var randomNames = ['Summer', 'Christabelle', 'Sam', 'Daniel']; for (let i = 0; i < randomNames.length; i++) { // 重点:判断当前名字的长度,而非索引i if (randomNames[i].length > 5) { console.log(randomNames[i]); } }
运行这段代码后,会输出Summer、Christabelle和Daniel,刚好是所有长度大于5的名字。
更简洁的现代JS写法
如果想让代码更易读,还可以用forEach遍历:
var randomNames = ['Summer', 'Christabelle', 'Sam', 'Daniel']; randomNames.forEach(name => { if (name.length > 5) { console.log(name); } });
或者先用filter筛选出符合条件的名字,再输出:
var randomNames = ['Summer', 'Christabelle', 'Sam', 'Daniel']; const longNames = randomNames.filter(name => name.length > 5); // 如果要逐个输出可以再遍历,或者直接打印数组 longNames.forEach(name => console.log(name));
核心就是记住:你要筛选的是数组元素的属性(名字长度),而不是循环的索引值哦!
内容的提问来源于stack exchange,提问作者Hanos
相关产品推荐
相关产品推荐

