【问题标题】:Splice method don't properly拼接方法不正确
【发布时间】:2021-12-23 11:10:51
【问题描述】:

我的拼接方法在这里不起作用(不要关注我的代码,只是我想知道为什么这段代码在我的控制台中不起作用)。

function capSpace(txt) {
  // write your code here
  wordSplit = txt.split("");
  for (let i = 0; i < wordSplit.length; i++) {
    if (wordSplit[i].toUpperCase() == wordSplit[i]) {
      wordSplit.splice(5, 0, " ")
    }

  }
  return wordSplit
}

console.log(capSpace("fausJkalMalkihkLhb"));

【问题讨论】:

  • “工作”是什么意思?你希望它做什么?
  • 你有一个无限循环。你不断添加到数组中,所以它永远不会到达末尾。
  • 为什么总是在索引5处拼接?
  • 尝试每次循环打印wordsplit,你会发现问题。

标签: javascript splice


【解决方案1】:

首先,您需要为添加到数组中的每个字符递增i

我假设您尝试在每个大写字母之前添加一个空格,在这种情况下,您需要将其添加到 i 索引处,而不是第 5 个索引处。

function capSpace(txt) {
  // write your code here
  wordSplit = txt.split("");
  for (let i = 0; i < wordSplit.length; i++) {
    if (wordSplit[i].toUpperCase() == wordSplit[i]) {
      wordSplit.splice(i, 0, " ");
      i++;
    }

  }
  return wordSplit
}

var result = capSpace("fausJkalMalkihkLhb").join('');
console.log(result);

【讨论】:

    【解决方案2】:

    拼接方法是在此处找到的 sn-p 中的 wordSplit 数组中添加一个空格:

    wordSplit.splice(5, 0, " ")
    

    这是在每次迭代时增加wordSplit 的长度和for循环的条件:

    i < wordSplit.length
    

    永远不会满足,因为wordSplit 的长度会增加,这会创建一个无限循环,因此永远无法返回wordSplit,因此永远无法控制台记录result 的变量,因为它陷入了无限状态循环。

    【讨论】:

    • 这就是我要找的,非常感谢
    • @Faisal 很高兴我能够理解并回答您的具体问题。
    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2010-12-24
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多