为何JavaScript数组筛选函数仅返回首个4字母元素?求错误排查
问题分析与修复
你的代码问题很明确:return result被放在了if判断的内部。
当循环第一次找到长度为4的元素时,执行push后立刻触发return,函数直接结束,后续的循环迭代根本没机会运行,所以只能拿到第一个符合条件的元素。
修正后的代码
function friend(friends){ let result = []; for (let i = 0; i < friends.length; i++){ if (friends[i].length == 4) { result.push(friends[i]); // 把return移出if块,放到循环结束后 } } return result; // 遍历完所有元素再返回结果 }; let x = ["Dustin", "Lily", "Steve", "Zed", "Mike"]; console.log(friend(x)); // 输出: ["Lily", "Mike"]
更简洁的写法(可选)
用JS数组的filter方法可以一行完成筛选,逻辑更清晰:
function friend(friends){ return friends.filter(name => name.length === 4); };
内容的提问来源于stack exchange,提问作者sanaaa
相关产品推荐
相关产品推荐

