为什么数字后面需要引号?这将如何使用parseInt编写?
function squareDigits(num){
return Number(('' + num).split('').map(function (val) {
return val * val;
}).join(''));
}发布于 2018-05-03 02:56:45
看起来您需要一个字符串,以便以后拆分数字。
这可以通过添加一个空字符串或使用toString()方法来完成,该方法不仅适用于Number和String对象。
function squareDigits(num) {
return Number(
('' + num) // convert to string
.split('') // split works only with string
.map(function(val) {
return val * val;
})
.join(''));
}
console.log(squareDigits(27));
发布于 2018-05-03 02:59:19
如果没有括号,它将是
'' + num.split('')这将尝试在字符串连接之前执行.split,因此它不会工作,因为它不存在于数字上。有了括号,它首先被连接成一个字符串,然后对它调用split。
发布于 2018-05-03 03:04:24
该函数的工作方式如下:
假设我们将234传递给squareDigits函数,它将该数字转换为字符串(通过''+num语句),然后将该字符串(使用.split(''))拆分为数组(['2', '3', '4'])中的单个数字,对于每个数字(它们实际上仍是字符串),我们将其与自身相乘(通过映射数组),乘法将起作用,因为我们使用了自动强制转换。最后,我们将连接数组以形成一个字符串(4916),然后将其转换为[4, 9, 16] (使用Number构造函数)。
使用parseInt的函数也不会有什么不同:
function squareDigits(num) {
return parseInt(('' + num).split('').map(function(val) {
return val * val;
}).join(''));
}https://stackoverflow.com/questions/50141590
复制相似问题