在JavaScript中将数字中的各个数字相乘
我正在尝试制作一个程序,将数字中的数字相乘。所以在JavaScript中将数字中的各个数字相乘,javascript,arrays,function,Javascript,Arrays,Function,我正在尝试制作一个程序,将数字中的数字相乘。所以583应该是5*8*3=120 它没有按预期工作,只是返回输入的编号 我怎样才能修好它 代码如下: 函数持久性(num){ //给我打电话 numString=num.toString(); numArray=numString.split().map(函数(t){ 返回parseInt(t) }); 功能减速机(theNumArray){ 设sum=1; 对于(变量i=0;i
583
应该是5*8*3=120
它没有按预期工作,只是返回输入的编号
我怎样才能修好它
代码如下:
函数持久性(num){
//给我打电话
numString=num.toString();
numArray=numString.split().map(函数(t){
返回parseInt(t)
});
功能减速机(theNumArray){
设sum=1;
对于(变量i=0;i 持久性(485)代码>您不需要拆分字符串,只需按字符编号引用字符即可。对于4*8*5=160的示例,这似乎很有效
另一种方法(在ECMAScript 5中介绍)是将字符串视为
一种类似数组的对象,其中单个字符对应于
数值索引
函数持久性(num){
numString=num.toString();
设sum=1;
对于(变量i=0;i 持久性(485)代码>您只需在拆分(“”)内部进行更改
演示
函数持久性(num){
//给我打电话
numString=num.toString();
numArray=numString.split(“”).map(函数(t){
返回parseInt(t)
});
功能减速机(theNumArray){
设sum=1;
对于(变量i=0;i
.as console wrapper{max height:100%!important;top:0;}
您可以将字符串拆分为空字符串,以获取单个数字。然后将所有字符串转换为一个数字(如果需要)
函数减速机(numarray){
var i,总和=1;
对于(i=0;i console.log(持久性(485))代码>假设num为正整数:
function persistence(num) {
var ans=1;
while( num!==0){
ans=ans*(num-Math.floor(num/10)*10);
num=Math.floor(num/10);
}
console.log(ans);
}
persistence(123);
这是基于(num Math.floor(num/10)*10)提取最低有效位。比如说
123-数学楼层(123/10)*10
123-12*10
123-120
三,
将num减少一位数,再除以10,依此类推。
您不需要字符串。根据split方法,将根据输入产生不同的结果(明显正确?):
无分隔符->如果不将分隔符参数传递给split方法,则生成的数组将包含一个由整个字符串组成的元素
因此,基本上从这里开始:
numString.split()
您将得到一个包含字符串(您的数字)的数组,该数组应更改为:
numString.split(“”)
因此,您的整个代码应该如下所示:
function persistence(num) {
numString = num.toString();
numArray = numString.split().map(function(t) {
return parseInt(t)
});
function reducer(theNumArray) {
let sum = 1;
for (var i = 0; i < theNumArray.length; i++) {
sum = sum * theNumArray[i];
}
return sum;
}
newNum = reducer(numArray);
console.log(newNum);
};
persistence(485);
函数持久性(num){
numString=num.toString();
numArray=numString.split().map(函数(t){
返回parseInt(t)
});
功能减速机(theNumArray){
设sum=1;
对于(变量i=0;i
“485.split()==[“485”]
使用reduce可复制真正干净的溶液。num Math.floor(num/10)*10
可能只是num%10