JavaScript数组查找最小3的倍数:代码异常调试求助
问题分析与修复方案
你的思路方向是对的——先升序排序数组,再找第一个3的倍数,但代码里存在几个关键错误导致无法正常运行,咱们逐个来修正:
错误点拆解
- 遍历对象搞错了:你写的
firstMultipleOf3.length是在取函数本身的长度(这是个无意义的数值),而不是遍历传入的numbers数组,应该改成numbers.length。 - 过早返回false:你的
else分支在第一个元素不是3的倍数时就直接返回false了,这会导致数组后面的元素根本没机会被检查!只有当遍历完所有元素都没找到3的倍数时,才应该返回false。 - 返回值类型错误:你返回的
[i]是元素的索引,而题目要求返回的是数值本身,应该改成numbers[i]。
修正后的代码
function firstMultipleOf3(numbers) { // 对数组进行升序排序 numbers.sort(function(a, b){return a - b}); console.log(numbers); // 遍历排序后的数组 for (var i = 0 ; i < numbers.length ; i++) { if (numbers[i] % 3 === 0) { // 找到第一个3的倍数,返回对应数值 return numbers[i]; } } // 遍历完所有元素都未找到,返回false return false; } // 测试用例 console.log(firstMultipleOf3([52,98,42,17,33,24])); // 输出24(排序后数组是[17,24,33,42,52,98],第一个3的倍数是24,原测试注释的42有误哦) console.log(firstMultipleOf3([38,52,34,13,41])); // 输出false
额外提醒
注意你的第一个测试用例,原数组排序后第一个3的倍数是24而非42,修正后的代码会输出正确结果~
内容的提问来源于stack exchange,提问作者TR54296
相关产品推荐
相关产品推荐

