javascript For循环if语句在第一个case处停止

pod7payv  于 2023-01-07  发布在  Java
关注(0)|答案(5)|浏览(141)

挑战:编写一个函数,接收一个或多个单词组成的字符串,并返回相同的字符串,但将所有五个或更多的字母单词颠倒过来(就像这个形的名字一样)。传入的字符串将只包含字母和空格。只有当出现多个单词时,空格才会包含在内。
例如:spinWords( "Hey fellow warriors" ) =〉返回"Hey wollef sroirraw"
现在我有这个

function spinWords(str) {
  var splitArray = str.split(' ')
  for (var i = 0; i < splitArray.length; i++) {
    if (splitArray[i].length > 5) {
      var long = splitArray[i].split('').reverse('').join('')
      return long
      i++
    } else {
      var short = splitArray[i]
      return short
      i++
    }
  }
}

正如我在标题中所说的,这是正常工作的,但只会返回数组中的第一个元素作为反转或不反转。谁比我聪明,请解释为什么循环不循环?谢谢你的时间。

ymdaylpp

ymdaylpp1#

Return结束函数。另一种方法。

const spinWords = words =>
  words
    .split(" ")
    .map(word => (word.length >= 5 ? [...word].reverse().join("") : word))
    .join(" ");

console.log(spinWords("Hey fellow warriors"));
oug3syen

oug3syen2#

你就快到了。
1.使用for循环时,您不希望再执行一次i++..
1.你说它应该是5或更多..所以它应该是〉=5

  1. return会终止for循环,因此最后使用它。
    修改后的函数可以如下所示:
function spinWords(str){
 var splitArray = str.split(' ');
 var spinnedWords = '';
  for (var i = 0; i < splitArray.length; i++) {
    if (splitArray[i].length >= 5) {
      var long = splitArray[i].split('').reverse('').join('');
      spinnedWords = spinnedWords.concat(' ' + long);
    }
    else {
     var short = splitArray[i]
     spinnedWords = spinnedWords.concat(' ' + short);
    }
  }
  return spinnedWords.trim();
}
dtcbnfnu

dtcbnfnu3#

要使此代码正常工作,必须更改三项内容。

第一个return语句将完成整个函数执行。因此,当不再执行代码时,应将其放在函数体的末尾。
Second您可以切换正在迭代的值,然后使用第一行的反转操作返回相同的数组(.join(' '))。
第三个如果在参数中定义了索引计数器,for循环已经在每次迭代结束时递增了索引计数器。循环体中不需要i++

function spinWords(str) {
  var splitArray = str.split(' ');
  for (var i = 0; i < splitArray.length; i++) {
    if (splitArray[i].length >= 5) {
      var long = splitArray[i]
        .split('')
        .reverse('')
        .join('');
      splitArray[i] = long;
    }
  }
  return splitArray.join(' ')
}
  • 编辑:不需要else语句 *
  • 编辑2:我忘了第三个变化 *
pobjuy32

pobjuy324#

function spinWords(str) {
  return str
    .split(" ")
    .map(word => word.length >= 5 ? word.split("").reverse().join("") : word)
    .join(" ");
}

console.log( spinWords("Hey fellow warriors") );
vvppvyoh

vvppvyoh5#

这是我的回答后,你的提示:

function spinWords(str){
 var splitArray = str.split(' ') 
 var finalArray = []
  for (var i = 0; i < splitArray.length; i++) {
  if (splitArray[i].length >= 5) {
    var long = splitArray[i].split('').reverse('').join('')
  finalArray.push(long)
    
  }
    else {
     var short = splitArray[i]
     finalArray.push(short)
    }
    
    
}
  return finalArray.join(' ')
}

相关问题