我试着用香草JavaScript编写一个简单的举重程序。用户输入一定量的重量,并返回特定的重量板放在杠铃的每一边。
然后,我把这个数字变成一个函数,从它中减去45,计算杠铃的重量,然后除以这个数字2,这是施加在酒吧两边的重量的数量。
const num = document.getElementById("weightAmount").value;
function getWeightAmount (num) {
const newNum = num - 45;
const halfNum = newNum / 2;
return getWeights(halfNum);
}我有一个包含每个重量板的数组:
let plates = [44, 33, 22, 11, 5.5, 2.75];我在正确循环数组以得到我想要的东西时遇到了问题。如果我需要,比如说,每一边60.5磅,它应该返回44,11,5.5。因此,我需要找出plate数组中哪些数字适合于我的第一个函数返回的数字。
我有一个名为weights的空数组,它希望将数字从plates数组中推到该工作中,然后返回权重。
我的问题是如何循环遍历plates数组以确定需要哪些权重?
发布于 2019-02-25 17:05:25
下面我有一个简单的解决方案,如果目标重量的值总是可用板块的总和。假设权重数组按降序排序。我循环考虑了所有可用的权重,只有当总重量超过所需的总重量时,才会继续进行下一个重量。
function getWeights(targeWeight) {
let plates = [44, 33, 22, 11, 5.5, 2.75];
let totalWeight = 0;
let neededPlates = [];
let i = 0;
while(i < plates.length){
var pweight = totalWeight + plates[i];
if (pweight > targeWeight) {
i++;
continue;
}
totalWeight += plates[i];
neededPlates.push(plates[i]);
}
return neededPlates;
}
console.log(getWeights(60.5)); // [44, 11, 5.5]
console.log(getWeights(104.5)); //[44, 44, 11, 5.5]https://stackoverflow.com/questions/54870802
复制相似问题