反转JavaScript中的字符串:为什么我的答案未通过测试?

问题描述 投票:0回答:5

我正在JavaScript测试中苦苦挣扎,我的答案没有通过,我不知道为什么?这是问题:

编写一个返回给定字符串反向的函数。尽管许多语言都具有内置功能来反转字符串,但是您应该手动进行操作,逐个字符地建立输出。例如,“ Hello”返回“ olleH”

这是我到目前为止所拥有的...

stringReverse = function(input) {
// Your code goes here
var inputA = input.split('');
var inputL = inputA.length;
var beta = new Array(inputL);
for (var i=0; i<inputL; i++) {
    var alpha = inputA.pop();
    beta.splice(i,1,alpha);
}
var newStr = beta.join('');
return console.log(newStr);
};

我的输出看起来正确,但是没有通过测试。我收到以下消息:

开始

olleHF AFF失败:1)解决方案测试Test1信息:预期的undefined等于'olleH'。堆:错误:未定义的期望值等于“ olleH”。在对象。 (/沙盒/鹿/SolutionSpec.js:7:40)2)SolutionTests Test2信息:预期未定义等于“ A”。堆:错误:预期未定义等于“ A”。在对象。 (/沙盒/鹿/SolutionSpec.js:11:36)3)解决方案测试Test3信息:预期未定义等于“”。堆:错误:未定义的期望值等于“”。在对象。 (/沙盒/鹿/SolutionSpec.js:15:35)3个规格,3个故障在0.014秒内完成

谢谢!

javascript arrays string for-loop reverse
5个回答
1
投票
return console.log(newStr);

这将返回undefined值。我想你的意思是:

return newStr;

1
投票

将最后一行更改为return newStr,而不是return console.log(newStr)。当前,您的程序输出正确的答案,但不返回任何内容。测试仅查看返回值undefined


1
投票

因此,这就是您的问题,您正在返回console.log(newStr)。这将运行console.log,该控制台没有输出,并且会返回缺少输出的状态,因此未定义。只是简单地返回newStr;


1
投票

其原因是您返回的console.log返回值是未定义的!

更改:

return console.log(newStr);

to

console.log(newStr);
return newStr;

问候!


1
投票

它是因为您正在控制台记录返回而不是返回newStr。

尝试此:

stringReverse = function(input) { 
   var inputA = input.split('');
   var inputL = inputA.length;
   var beta = new Array(inputL);
   for (var i=0; i<inputL; i++) {
     var alpha = inputA.pop();
     beta.splice(i,1,alpha);
   }
   var newStr = beta.join('');
   return newStr;
};

您也只能在一行中执行此操作:

stringReverse = function(input) {
   return input.split("").reverse().join("");
}
© www.soinside.com 2019 - 2024. All rights reserved.