[英]Why does the evaluation of a string defining a function return undefined instead of the function?
[英]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.