Javascript For循环if语句在第一种情况下停止
挑战: 编写一个函数,该函数接受一个或多个单词的字符串,并返回相同的字符串,但所有五个或多个字母单词都颠倒(就像这个Kata的名称一样)。传入的字符串将仅由字母和空格组成。只有存在多个单词时,才会包含空格 例如:Javascript For循环if语句在第一种情况下停止,javascript,Javascript,挑战: 编写一个函数,该函数接受一个或多个单词的字符串,并返回相同的字符串,但所有五个或多个字母单词都颠倒(就像这个Kata的名称一样)。传入的字符串将仅由字母和空格组成。只有存在多个单词时,才会包含空格 例如: spinWords(“嘿,勇士们”)=>返回“嘿,wollef sroirraw” 现在我有这个 function spinWords(str) { var splitArray = str.split(' ') for (var i = 0; i < splitArra
spinWords(“嘿,勇士们”)
=>返回“嘿,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++
}
}
}
函数自旋字(str){
var splitArray=str.split(“”)
对于(var i=0;i5){
var long=splitArray[i]。拆分(“”)。反转(“”)。连接(“”)
回程
我++
}否则{
var short=splitArray[i]
短报
我++
}
}
}
正如我在标题中所说的,这可以正常工作,但只会返回数组中的第一个元素,无论是否颠倒。有谁比我聪明,请解释一下为什么循环不循环?
感谢您抽出时间。要使此代码正常工作,必须更改三件事 首先
return
语句将完成整个函数的执行。因此,当不再执行代码时,它应该放在正文的末尾
秒
您可以切换正在迭代的值,然后使用第一行的反向操作(.join(“”)
)返回相同的数组
第三
如果在参数中定义了索引计数器,则for循环的
已经在每次迭代结束时增加了它。循环体中不需要i++
函数自旋字(str){
var splitArray=str.split(“”);
对于(var i=0;i=5){
var long=splitArray[i]
.拆分(“”)
.反面(“”)
.加入(“”);
splitArray[i]=长;
}
}
返回splitArray.join(“”)
}
编辑:不需要else
语句
编辑2:我忘了第三个需要的零钱了谢谢大家的帮助。
这是我根据你的提示给出的答案
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(' ')
}
var splitArray=str.split(“”)
var finalArray=[]
对于(var i=0;i=5){
var long=splitArray[i]。拆分(“”)。反转(“”)。连接(“”)
最后推(长)
}
否则{
var short=splitArray[i]
最后推(短)
}
}
返回finalArray.join(“”)
}
你就快到了
使用for循环,您不想再做一次i++
你说过会有5个或更多。。所以它应该是>=5
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();
}
函数自旋字(str){
var splitArray=str.split(“”);
var spinnedWords='';
对于(var i=0;i=5){
var long=splitArray[i]。拆分(“”)。反向(“”)。连接(“”);
spinnedWords=spinnedWords.concat(“”+长);
}
否则{
var short=splitArray[i]
spinnedWords=spinnedWords.concat(“”+短);
}
}
返回spinnedWords.trim();
}
返回结束函数。
另一种方法
const spinWords=words=>
话
.拆分(“”)
.map(word=>(word.length>=5?[…word].reverse().join(“”:word))
.加入(“”);
log(spinWords(“嘿,勇士们”)代码>
函数自旋字(str){
返回str
.拆分(“”)
.map(word=>word.length>=5?word.split(“”).reverse().join(“”):word)
.加入(“”);
}
log(spinWords(“嘿,勇士们”)
return
终止函数在return
语句之后不运行任何代码。请将其放在函数的末尾。您需要将每次迭代的结果连接到一个字符串中,以便在末尾返回。@imstupidpleasehelp刚刚看到您的另一条注释。这取决于你想要什么结果。如果你仔细想想,你打算如何处理你返回的数据?您希望如何读取2条返回语句?您计划如何恢复数据?您计划如何使用它?你的答案就在这个问题上。你不需要在if
语句中使用i++
,你已经在for
标题中这样做了。如果这样做,将跳过数组中的每一个其他元素。