【问题标题】:Javascript for loop only runs onceJavascript for 循环只运行一次
【发布时间】:2022-10-14 03:00:09
【问题描述】:

为什么这个 for 循环只运行一次?我放了增量,但它只返回数组中第一个元素的最后一个字母,而不是另一个。

function lastChars(arr){
  for( let i=0;i<arr.length;i++){
    let letter=arr[i].slice(-1);
    return letter  
  }
}
console.log(lastChars(['the','book']))

它只打印 e 而不是 k。

【问题讨论】:

  • 我如何让它连续循环?

标签: javascript


【解决方案1】:

在您的 for 循环中,您有一个 return 语句。第一次达到该值时,该函数将返回该值。换句话说,该函数甚至在到达循环的第二部分之前就停止了。

您可能希望打印字符,或将其添加到列表中,以便在循环完成后返回该字符。

【讨论】:

    【解决方案2】:

    功能返回在循环的第一次迭代中,从而结束函数的执行:

    for( let i=0;i<arr.length;i++){
      let letter=arr[i].slice(-1);
      return letter // <--- here
    }
    

    如果您希望聚合多个字母并返回所有字母,您可能会执行一些操作,例如将它们放入数组并返回数组循环:

    let letters = [];
    for( let i=0;i<arr.length;i++){
      letters.push(arr[i].slice(-1));
    }
    return letters;
    

    它本身可以简化为:

    return arr.map(a => a.slice(-1));
    

    例如:

    const lastChars = arr => arr.map(a => a.slice(-1));
    console.log(lastChars(['the','book']))

    【讨论】:

    • 太感谢了!!!