简单添加数字的位数平方
Simple Adding square of digits of a number
这个脚本的结果不是数字的平方和,第一个函数运行良好,我想问题出在第二个中
function nToArray(a) {
var res=[];
var s =a.toString();
for(i=0;i<s.length;i++){
res[i]=s.charAt(i);}
return res;
}
//var a ="hola";
//document.write(a.length);
alert(nToArray(562));
function addSq(b){
var c=nToArray(b);
var z=0;
var i;
for (i=0;i<=c.length;i++){//here
z+=((parseInt(c[i]))^2);}
return z;
}
alert(addSq(81));
对于81,我得到15,我没有得到。
JavaScript没有幂运算符,^
是一个逐位整数XOR。
您正在查找Math.pow
。
z += Math.pow(parseInt(c[i]), 2);
或者,当然,只需使用*
来相乘:
var value = parseInt(c[i]);
z += value * value;
这里有一个简短的版本-很抱歉缺少格式:
var a=81;
console.log(a.toString().split('').map(function(i) {return Math.pow(i, 2)}).reduce(function(a, b) {return a + b}));
虽然^在某些语言中表示指数,但在JavaScript中却不是这样。
更改
z+=((parseInt(c[i]))^2);
至
var tmp = parseInt(c[i]);
z+= tmp * tmp;
你可以用数字来完成:
function sum_of_squares_of_digits(n) {
var s = 0;
while (n) {
var digit = n % 10;
s += digit * digit;
n = (n - digit) / 10;
}
return s;
}
只是为了好玩,尝试使用regexp:
function sum_of_squares_of_digits(n) {
var s = 0;
n.toString().replace(/'d/g, d => s += d * d);
return s;
}
希望这有帮助:
编辑
function addSq(num){
var numNoStr = parseInt(num, 10);
var z = 0;
while (numNoStr > 0) {
var digit = numNoStr % 10;
z += Math.pow(digit, 2);
numNoStr = parseInt(numNoStr / 10 , 10);
}
return z;
}
alert(addSq(81));
相关文章:
- 我可以使用JavaScript闭包添加数字吗
- 如何在JavaScript中向选定的类中递增添加数字
- HTML 按钮在 Javascript 的文本字段中添加数字
- 如何从动态输入字段添加数字
- 在 Javascript 中添加数字时遇到麻烦
- 使用 JavaScript 在数组中添加数字
- 在 for loop JavaScript 中添加数字
- 使用jQuery单击按钮时添加数字
- 嵌套循环以添加数字
- JQuery 添加数字值
- 使 $.getScript(“”) 不要在请求末尾添加数字
- 使用递归性javascript从数字中添加数字
- javascript:循环添加数字
- 以字符串形式添加数字的Javascript
- 如何通过输入自动添加数字
- 如何在javascript中字符串的第一个字符之前添加数字
- 简单添加数字的位数平方
- 如何使用javascript为onclickurl添加数字
- 向复选框属性添加数字并限制选中复选框的数量
- 3种类型的按钮,使它们添加数字