JavaScript中的非负数组减法

JavaScript中的非负数组减法,javascript,algorithm,Javascript,Algorithm,找到的答案非常接近我所寻找的,但并不完全如此。我要看的是我有一个整数数组,还有一个我需要从数组中减去的值。在继续下一步之前,我想将每个索引归零。我不想要任何小于0的数字,也不想要任何小数。。因此,对于subtractFromSet([4,5,6,7,8],25]),而不是返回: [0,0,0.666666666666667,1.666666666666666,2.666666666666666] 我想: [0,0,0,0,5] 你可以循环,直到没有东西可以减去为止 函数减去arr(arr,

找到的答案非常接近我所寻找的,但并不完全如此。我要看的是我有一个整数数组,还有一个我需要从数组中减去的值。在继续下一步之前,我想将每个索引归零。我不想要任何小于0的数字,也不想要任何小数。。因此,对于subtractFromSet([4,5,6,7,8],25]),而不是返回:

[0,0,0.666666666666667,1.666666666666666,2.666666666666666]
我想:

[0,0,0,0,5]

你可以循环,直到没有东西可以减去为止

函数减去arr(arr,val){
常量res=[…arr];//复制
对于(设i=0;i0;i++){
常数take=Math.min(res[i],val);
res[i]=take;
val-=take;
}
返回res;
}

log(减去arr([4,5,6,7,8,25])您可以循环数组“次数”,同时从当前索引中减去1,并在索引等于0时移动到下一个索引

function subtractFromSet(array, number) {
  var i = 0;
  do {
    array[i]--;
    number--;
    if(array[i] == 0) i++;
  } while (number != 0);
  return array;
}
subtractFromSet([4, 5, 6, 7, 8], 25);

请重新编写您的问题,使其成为独立问题。不是一个依赖于其他Q的问题。有什么特殊的规则如何将您的输入转换为所需的输出?因为如果你有一个输入
([a1,a2,…,an],b)
你想要的结果似乎是
[0,0,…,0,sum(a1,…an)-b)]
即数组的所有元素都是
0
,除了最后一个,数组和
b
之和之间的差值是多少?我的答案对你有用吗?很好。如果我的答案解决了你的问题,你介意接受吗?