求修正:筛选偶数长度字符串的JavaScript函数实现
修正函数:筛选数组中偶数长度的字符串
原代码的问题
- 类型判断错误:
items[i] == typeof string是无效写法,正确的字符串类型判断应为typeof items[i] === 'string'(typeof返回字符串类型的结果,且需严格相等,string要加引号)。 - 长度判断逻辑冗余且错误:
items[i] == 0 && items[i].length % 2 == 0完全没必要,空字符串的长度本身就是0,符合偶数要求,只需要判断字符串长度模2等于0即可。 - 循环内提前返回:第一次循环就执行了
return result,导致数组只遍历第一个元素就终止,无法处理后续项。 - 返回逻辑错误:外层的
return []永远不会被执行,因为循环内已经提前返回了。
修正后的实现(for循环版)
function findEvenLengthStrings(items) { let result = []; for (let i = 0; i < items.length; i++) { // 先判断当前项是否为字符串类型 if (typeof items[i] === 'string') { // 判断字符串长度是否为偶数 if (items[i].length % 2 === 0) { result.push(items[i]); } } } // 遍历完所有元素后返回结果,无符合项则返回空数组 return result; }
更简洁的实现(使用Array.filter)
利用数组的filter方法可以更简洁地完成需求,可读性更高:
function findEvenLengthStrings(items) { return items.filter(item => { return typeof item === 'string' && item.length % 2 === 0; }); }
验证示例
// 测试用例1:包含多种类型的数组 console.log(findEvenLengthStrings(['a', 'bb', 123, 'cccc', true, ''])); // 输出:['bb', 'cccc', ''] // 测试用例2:无符合条件的项 console.log(findEvenLengthStrings([1, false, null])); // 输出:[]
内容的提问来源于stack exchange,提问作者ah1917
相关产品推荐
相关产品推荐

