Javascript Can';我不知道如何在增量函数中加一个零
因此,我有一个函数,它接受一个数字数组(例如,Javascript Can';我不知道如何在增量函数中加一个零,javascript,arrays,recursion,Javascript,Arrays,Recursion,因此,我有一个函数,它接受一个数字数组(例如,[7,4,5]),该函数应该将其递增一(因此,[7,4,6])。我已经建立了功能,它的工作!但我无法理解这种情况:[1,9,9,9]应该变成[2,0,0],但它只是[2] 我已经提供了下面的函数。任何建议都会非常有用。我确实做过递归,但这似乎是个好主意 function increment(arr){ let num = arr.pop(); if(num === 9){ increment(arr); } else {
[7,4,5]
),该函数应该将其递增一(因此,[7,4,6]
)。我已经建立了功能,它的工作!但我无法理解这种情况:[1,9,9,9]
应该变成[2,0,0]
,但它只是[2]
我已经提供了下面的函数。任何建议都会非常有用。我确实做过递归,但这似乎是个好主意
function increment(arr){
let num = arr.pop();
if(num === 9){
increment(arr);
} else {
arr.push(num + 1);
console.log(arr);
}
}
如何将数组元素连接在一起,然后解析int并添加1,然后将其转换为字符串,并将数字拆分为数组
var arr = [1,9,9];
numberString = arr.join('');
numberToIncrement = parseInt(numberString)+1;
arr = String(numberToIncrement).split('');
console.log(arr) // [2,0,0]
您可以加入数组值,然后按如下方式将其拆分:
函数增量(arr){
设num=Number(arr.join(“”);
返回字符串(num+1).split(“”).map(Number);
}
log(增量([1,9,9,9])代码>首先将数组转换为数字
将其递增1,然后将其转换回数组
:
var-arr=[9,9,9];
函数增量(){
var anum=Number(arr.join(“”);//将arr转换为Number
anum++;//递增数字
var newArr=anum.toString().split(“”)
警报(newArr);//最终新数组
}
增量()代码>您可以使用并保存提货以便取消提货
它适用于任何大小的阵列
function inc(数组){
var carry=array.reduceRight(函数(r,a,i,aa){
var v=a+r;
aa[i]=v%10;
返回数学楼层(v/10);
}, 1);
进位和数组。取消移位(进位);
返回数组;
}
log(inc([7,4,5]);
log(inc([1,9,9,9]);
log(inc([9,9,9,9,9])代码>
.as console wrapper{max height:100%!important;top:0;}
在递增9之后,您忘记了追加0
函数增量(arr){
如果(!arr | |!arr.length)返回[1];
设num=arr.pop();
如果(num==9){
设newArr=增量(arr)
新到达推力(0);
返回newArr;
}否则{
arr.push(num+1);
}
返回arr;
}
console.log(增量([0]));
日志(增量([1,9,9]);
log(增量([9,9,9,9])代码>虽然到目前为止给出的答案是正确的,但它们的运行时间与输入元素的数量呈线性关系=O(n)。以下溶液平均以恒定时间=O(1)运行:
//增量数组:
功能增量(arr){
让进位=1;
for(设i=arr.length-1;i>=0&&carry>0;--i){
arr[i]+=进位;
进位=数学楼层(arr[i]/10);
arr[i]=10;
}
while(进位>0){
到达取消移位(进位%10);
进位=数学楼层(进位/10);
}
返回arr;
}
//例如:
log(增量([9,9])代码>它在[9,9,9]
中应该如何运行?[9,9,9]应该变成[1,0,0,0]。噢,我完全忽略了这一点。哈嗯……问题是它返回字符串而不是int。这意味着如果不将其转换回来,您将无法再次使用它。与@Brian McCall的问题相同,thi返回字符串而不是int。这意味着如果不将其转换回来,您将无法再次使用它。console.log(newArr.map(Number))不要忘记返回被操纵的数组
@jdmdevdotnet好吧,函数本身实际上是返回未定义的-但是,即使不是,也没关系,因为Number(arr.join(“”)
将强制它返回一个数字,无论数组中的值是字符串还是ints@Rayon我不确定是否返回新数组,因为OP在原始代码中没有返回任何内容。不过,我要补充一点,从函数的角度来看,它是有意义的。你能解释一下reduceRight:)它和reduce一样,但它是从右边开始的。索引从array.length-1
变为零。