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

JavaScript中split返回数组用splice删空串仍残留该如何解决

JS获取字符串最后一个单词及长度的问题修复

代码出错的核心原因

  • 第一个版本用for循环+splice删除空字符串的逻辑有缺陷:splice会修改原数组长度,删除元素后后续元素索引会前移,循环i直接自增会跳过下一个元素,导致空字符串无法全部清理干净。
  • 第二个版本的map逻辑不生效:map不会修改原数组,只会返回新数组,你没有接收map的返回值,原sentence数组完全没有变化;且空字符串替换空格后依旧是空字符串,无法达到过滤效果。
  • 两个版本共有的逻辑缺陷:你最开始就用未处理的split结果给theLastWord赋值,就算后续处理了sentence数组,也没有更新这个变量,最终输出的还是最初拿到的空值。

正确实现方案

方案1:split后过滤空字符串

用filter方法直接过滤掉split产生的所有空字符串,逻辑简单易读:

var lengthOfLastWord = function(s) {
  // 分割后过滤所有空字符串,也可以简写为.filter(Boolean)
  const validWords = s.split(' ').filter(item => item.length > 0);
  // 处理全空格的边界场景
  const lastWord = validWords.length ? validWords.pop() : '';
  const result = `The last word is "${lastWord}" with length ${lastWord.length}.`;
  console.log(result);
  return result;
};
// 测试用例
lengthOfLastWord('    god.   I hate   leetcode    why  ');
// 输出:The last word is "why" with length 3.

方案2:更简洁的正则实现

先trim清理首尾空格,再用匹配多空格的正则分割,直接得到无空元素的单词数组:

var lengthOfLastWord = function(s) {
  // trim去掉首尾空格,/\s+/匹配1个或多个空格分割,避免中间多空格产生空元素
  const lastWord = s.trim().split(/\s+/).pop() || '';
  const result = `The last word is "${lastWord}" with length ${lastWord.length}.`;
  console.log(result);
  return result;
};

内容的提问来源于stack exchange,提问作者user5481714

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:54:03