You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求修正:筛选偶数长度字符串的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:45:48