Javascript 可以从具有给定订单大小的数组中获取多少项

Javascript 可以从具有给定订单大小的数组中获取多少项,javascript,arrays,for-loop,if-statement,Javascript,Arrays,For Loop,If Statement,我有一个包含数字的数组,其中数组顺序是固定的 我想看看我可以用JS中的ordersize从这个数组中提取多少项 我的代码给出了错误的结果,例如500个单位可以购买前2个项目,第3个项目的0,66个,所以总共可以获得2,66个,但代码给出了4个。对于250台机组,我可以取第一项全部,第二项总计的0.75,取1.75,但代码给出1.5 对于300给出2,这是正确的,但通常给出错误的结果 我已经更改了for和if条件的内部或外部的结果行,它会影响结果,但结果仍然是错误的(对于给定的阵列2100,uni

我有一个包含数字的数组,其中数组顺序是固定的

我想看看我可以用JS中的ordersize从这个数组中提取多少项

我的代码给出了错误的结果,例如500个单位可以购买前2个项目,第3个项目的0,66个,所以总共可以获得2,66个,但代码给出了4个。对于250台机组,我可以取第一项全部,第二项总计的0.75,取1.75,但代码给出1.5

对于300给出2,这是正确的,但通常给出错误的结果

我已经更改了for和if条件的内部或外部的结果行,它会影响结果,但结果仍然是错误的(对于给定的阵列2100,unit ordersize将使用6个结果的所有项目)

函数计算顺序(){
var coinArray=[100200300400500600];
var orderSize=500;
var总和=0;
var i=0;
对于(i=0;idocument.write(calculateOrder())您的代码有三个问题:

  • for
    循环执行
    if
    语句,然后执行
    return
    语句,以便在第一次迭代期间始终返回
  • for
    循环需要迭代,直到
    i
  • 编写的循环迭代次数过多,导致
    return
    语句中的值不正确
以下是纠正这些问题的版本:

函数计算顺序(){
var coinArray=[100200300400500600];
var orderSize=500;
var总和=0;
var i=0;
对于(i=0;iorderSize){//if超过orderSize
返回i+((orderSize-sum)/coinArray[i]);//2+(0.66)
}
sum+=coinArray[i];//否则添加到sum
}
}

document.write(calculateOrder())您的代码有三个问题:

  • for
    循环执行
    if
    语句,然后执行
    return
    语句,以便在第一次迭代期间始终返回
  • for
    循环需要迭代,直到
    i
  • 编写的循环迭代次数过多,导致
    return
    语句中的值不正确
以下是纠正这些问题的版本:

函数计算顺序(){
var coinArray=[100200300400500600];
var orderSize=500;
var总和=0;
var i=0;
对于(i=0;iorderSize){//if超过orderSize
返回i+((orderSize-sum)/coinArray[i]);//2+(0.66)
}
sum+=coinArray[i];//否则添加到sum
}
}

document.write(calculateOrder())使用下面的代码。我给你做了几件事

  • 创建一个变量来存储您当前拥有的钱的金额。所以每次你“买”一件东西,你就减去你买的东西
  • 我改变了一些逻辑,使它起作用。基本上,退货声明将您当前的金额除以所需的金额,以获得您可以购买的部分商品,然后将您已经购买的商品的金额相加
  • 另外,你还需要有其他的。else在if语句结果为false时执行,因此当您没有足够的钱购买物品时,else将执行
  • return
    中断了函数的,因此这是您以前的代码无法正常工作的原因之一。for循环将执行一次,然后中断
  • for
    循环需要在
    coinArray.length
    处结束。您可能认为需要使用
    -1
    ,因为数组索引从0开始,除了for循环小于且不小于或等于之外,它将在最后一个索引处结束
    函数计算顺序(orderSize){
    var coinArray=[100200300400500600];
    var amountOfMoney=订单大小;
    对于(var i=0;icoinArray[i]){
    amountOfMoney-=coinArray[i];
    }
    否则{
    返回i+amountOfMoney/coinArray[i];
    }
    }
    }
    
    文件编写(计算顺序(500))使用下面的代码。我给你做了几件事

  • 创建一个变量来存储您当前拥有的钱的金额。所以每次你“买”一件东西,你就减去你买的东西
  • 我改变了一些逻辑,使它起作用。基本上,退货声明将您当前的金额除以所需的金额,以获得您可以购买的部分商品,然后将您已经购买的商品的金额相加
  • 另外,你还需要有其他的。else在if语句结果为false时执行,因此当您没有足够的钱购买物品时,else将执行
  • return
    中断了函数的,因此这是您以前的代码无法正常工作的原因之一。for循环将执行一次,然后中断
  • for
    循环需要在
    coinArray.length
    处结束。您可能认为需要使用
    -1
    ,因为数组索引从0开始,除了for循环小于且不小于或等于之外,它将在最后一个索引处结束
    函数计算顺序(orderSize){
    var coinArray=[100200300400500600];
    var amountOfMoney=订单大小;
    对于(var i=0;icoinArray[i]){
    amountOfMoney-=coinArray[i];
    }
    否则{