我试图对数字的每个数字进行平方; 例如:
123应返回149
983 - > 81649等等
我在下面的Javascript代码中把它搞砸了,我正在寻找一些指导。
function splitNumber(num){
var arr = [];
while(num>0){
var c = num%10;
arr[arr.length]=c;
num=num/10;}
return arr;
}
function squareArrToNumber(arr){
var c = 0;
for(var i=arr.length-1;i>=0;i--){
arr[i]=arr[i]^2;
if(arr[i]^2>10)
c = c*100+arr[i];
else
c = c*10+arr[i];
}
return c;
}
function squareDigits(num){
squareArrToNumber(splitNumber(num));
}
答案 0 :(得分:1)
试试这段代码
function numToSqr(num){
var i, sqr=[],n;
num = num.toString();
for(i=0;i<num.length;i++){
n = Number(num[i]);
sqr.push(n*n);
}
return Number(sqr.join(""));
}
答案 1 :(得分:1)
您的代码存在多处问题,从过度复杂开始,将一串数字拆分为其合作字符只需使用.splt("")
:
var str = "123";
var arr = str.split("");
for(var i = 0;i<arr.length;i++)
alert(arr[i]);
接下来,代码num ^ 2
不会对数字进行平方。要做一个正方形,只需将数字乘以它自己(num * num
)
这给我们留下了一个相当简单的解决方案
function splitNumber(num){
return num.split("");
}
function joinArray(arr){
return arr.join("");
}
function squareArrToNumber(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
newArr.push(arr[i] * arr[i]);
}
return joinArray(newArr);
}
function squareDigits(num){
return squareArrToNumber(splitNumber(num));
}
alert(squareDigits("123"));
alert(squareDigits("983"));
答案 2 :(得分:0)
以下是我会做这样的事情:
var num = 123;
var numArray = num.toString().split("");
var result = "";
for(var i = 0; i < numArray.length; i++){
result += parseInt(numArray[i]) * parseInt(numArray[i]);
}
答案 3 :(得分:0)
function squareNum(number) {
var array = [];
// Split number into an array of numbers that make it up
array = String(number).split('');
for (let i = 0; i < array.length; i++) {
// Take each number in that array and square it (in place)
// Also can be done with forEach depending on what es version you're targetting
array[i] = Math.pow(array[i], 2);
}
// combine and return the elements of the array
return Number(array.join(''));
}
squareNum(123);
squareNum(983);
答案 4 :(得分:0)
尝试此示例
function squareDigits(n) {
return +(n.toString().split('').map(val => val * val).join(''));
}
console.log(squareDigits(4444));
此处 + 符号将字符串转换为整数。
答案 5 :(得分:-1)
if(arr[i]^2>10)
应该是
if(arr[i]>10)
而且,正如@Luaan所说,它应该是
arr[i] *= arr[i]