繁体   English   中英

为什么这个反向堆栈函数返回 undefined 而不是预期的输出?

[英]Why does this reverse stack function return undefined instead of expected output?

输出未定义。 我看不出代码有什么问题,可能是小问题..有什么帮助吗? 输入 123,预期输出 321。

 var reverse = function(x) { var stack = []; var number; for (var i = 0; i < x.length; i++) { stack.push(x); } while (stack.length > 0) { number += stack.pop(); } return number; }; console.log(reverse(123));

你犯了三个错误:

  • 您需要先将数字转换为字符串。
  • 第二个错误是您将x推入整数以stack推入该索引处的字符。
  • 您需要将number最初设置为'' not undefined

 var reverse = function(x) { x = String(x) var stack=[]; var number = ''; for(var i =0;i<x.length;i++){ stack.push(x[i]) } while(stack.length >0){ number += stack.pop(); } return +number; }; console.log(reverse(123))

我认为最好将数字转换为字符串数组,然后循环遍历数组的一半以反转它。 最后使用join()

 var reverse = function(x) { x = String(x).split(''); for(let i = 0;i<Math.floor(x.length/2);i++){ let temp = x[i]; x[i] = x[x.length - i - 1]; x[x.length - i - 1] = temp; } return x.join('') }; console.log(reverse(123))

当您不想使用reverse()时,上面的代码是最好的。 使用reverse()你可以制作一个单线

 var reverse = x => +String(x).split('').reverse().join('') console.log(reverse(123))

使用扩展运算符...拆分字符串(在这种情况下,等效于s.split('') )。 reverse数组,然后使用join('')

 const reverse = (s) => { let isNumber = typeof s === 'number' if (isNumber) s += ''; // Convert to string let result = [...s].reverse().join(''); return isNumber ? parseInt(result) : result; } console.log(reverse(123));

编辑:处理数字和字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM