为何无法向空数组中添加元素?数组筛选函数返回空数组的问题排查
为什么我的函数返回空数组?
别着急,问题根本不是“无法向空数组添加元素”——而是你的for循环条件写错了,导致循环体一次都没执行,result自然一直是空的!
问题出在哪?
看你的for循环条件:
for (var i = 0; i == array.length - 1; i++) {
这里的判断逻辑完全错误:初始值i=0,当传入的数组长度是3时,array.length-1是2,0不等于2,循环直接跳过了,里面的push语句根本没机会执行!
正确的循环逻辑应该是让i从0开始,遍历数组的每一个元素,也就是用i < array.length或者i <= array.length - 1作为判断条件。
修正后的基础版本
把循环条件改对,代码就能正常工作了:
function getWords(array, givenLength) { var result = []; // 修正循环条件:遍历数组所有元素 for (var i = 0; i < array.length; i++) { if (array[i].length >= givenLength){ result.push(array[i]); } } return result; } console.log(getWords(['Florida', 'dog', 'phone'], 5)); // 输出:['Florida', 'phone']
用数组方法简化代码(符合你的需求)
既然你提到要用数组方法,其实可以直接用Array.prototype.filter(),这比手动写for循环更简洁直观:
function getWords(array, givenLength) { // filter自动遍历数组,返回所有符合条件的元素组成的新数组 return array.filter(word => word.length >= givenLength); } console.log(getWords(['Florida', 'dog', 'phone'], 5)); // 输出:['Florida', 'phone']
filter方法会遍历数组中的每个元素,将满足回调函数条件的元素收集起来返回新数组,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者s b
相关产品推荐
相关产品推荐

