【问题标题】:How do you target indexes of a string in a for loop?如何在 for 循环中定位字符串的索引?
【发布时间】:2019-10-25 15:59:49
【问题描述】:

我正在处理代码挑战,我想针对奇数和偶数索引。我的代码基于W3 schools tutorial,我什至无法控制台记录for循环。但是,当我尝试在节点中定位索引时,它工作正常。这是我的代码:

let newString = ''
  for (let even, odd= 1; even < string.length; even + 2, odd + 2) {
    newString += string[even] + string[odd]
  }
console.log(newString)

【问题讨论】:

  • 您的代码没有初始化even,也没有增加任何一个变量。
  • 对于长度不均匀的字符串,这将无法正常工作(在解决了 Pointy 已经提到的问题之后)。
  • 这是做什么的?如果你修复了这些错误,它只会复制字符串。您是否打算交换偶数和奇数元素?
  • 你没有得到console.log(),因为你有一个无限循环,因为你永远不会增加变量。 even + 2 应该是even += 2odd 也是一样。

标签: javascript string for-loop


【解决方案1】:

您需要初始化这两个变量,而不仅仅是odd

你需要用增加的值重新分配变量,否则你有一个无限循环。

let newString = '';
for (let even = 0, odd = 1; even < string.length; even += 2, odd += 2) {
    newString += string[even];
    if (odd < string.length) { // avoid incorrect result if string has odd length
        newString += string[odd];
    }
}
console.log(newString);

真的不需要odd 变量,因为它总是even + 1,但我把它留在了里面。

【讨论】:

    【解决方案2】:

    这个比较简单,并结合了上述cmets中的建议。

    let newString = '';
      for (let even = 0; even < string.length - 1; even += 2) {
        newString += string[even] + string[even + 1];
      }
    console.log(newString);
    

    【讨论】:

      【解决方案3】:

      这是我的代码建议。永远不要忘记测试索引范围溢出,否则你会在字符串的末尾得到一个非常讨厌的“未定义”,呵呵。

      let newString = '';
      
      for (let index = 0; index < string.length; index+=2) {
          newString += string[index] + (string[index + 1] || '');
      }
      
      console.log(newString);
      

      【讨论】:

        猜你喜欢
        • 2018-08-13
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多