如何在JavaScript中对数字进行分组
How to group numbers in JavaScript
本文关键字:数字 JavaScript 更新时间:2023-09-26
所以我试图创建一些逻辑,根据设备数量计算订阅方案。这个东西的定价有点奇怪,我遇到了麻烦,所以让我试着解释一下。
定价模型是这样的
1,2个设备每个15美元(3,4,5(是10美元(对于整个组(+最初的前两个设备,然后这种模式无限期重复。因此,让我进一步说明1,2(3,4,5(6,7(8,9,10(这总共是80美元,我们有4个设备要收费,每个15美元,然后有2组,每个10美元,但这也适用于如果是1,2、4、5(6、7(8、9(,这仍然是80美元的,因为组从第一个数字开始,所以1、2(3(会变成40美元。所以我的问题是我不知道如何做到这一点。这是我的代码,到目前为止,任何帮助或指导都将不胜感激。我也有一种感觉,我从一个完全错误的角度来看待这个问题。
JavaScript
var numberOfDevices = 19,
numberOfEach = 8, //Awesome imaginary code that would calculate the value from numberOfDevices
numberOfGroups = 4, //Awesome imaginary code that would calculate the value from numberOfDevices
priceOfEach = 15,
priceOfGroup = 10,
addUpEach = numberOfEach * priceOfEach,
addUpGroup = numberOfGroups * priceOfGroup,
addUpAll = addUpEach + addUpGroup;
alert(addUpAll);
让我们将五个集合称为一个包,因为我们必须对其进行调用。包裹很容易计数,我们只需对设备数量进行整数除法:
var packages = Math.floor(19 / 5);
计算packages
包数的总数很简单:
var total = packages * (15 + 15 + 10); // or var total = packages * 40
现在,我们使用余数运算符获取剩余值
var leftovers = 19 % 5;
应用问题中所述的规则,零设备零美元,前两个各15美元,包40美元:
if(leftovers <= 2) {
total += leftovers * 15;
} else { // otherwise count it as a package.
total += 40;
}
将所有这些封装在可读的双线解决方案中:
function calc(num) {
var leftovers = num % 5;
return (leftovers <= 2 ? leftovers * 15 : 40) + Math.floor(num / 5) * 40;
}
一个无法阅读但有效的解决方案:
function c(n){return n%5<=2?n%5*15:40+Math.floor(n/5)*40;}
相关文章:
- 使用全局变量来存储数字(JavaScript)
- 字符串到数字JavaScript
- 查找总和最大的数字(Javascript)
- 将字符串中的重复字符替换为不断增长的数字 [Javascript]
- 选择下拉选项时显示数字-javascript
- 用户在数字上输入金额,然后输出最高数字javascript
- 字母数字 JavaScript 正则表达式失败
- 仅数字 Javascript 表单验证
- 如何从一组特定的数字中找到最接近的更高数字:javascript
- 将字符串 num 转换为数字 JavaScript
- 将字符串转换为数字 Javascript
- 提取两种模式之间的数字 javascript
- 添加两个十六进制数字 javascript 与位移
- 确定是否按下了字母或数字-Javascript
- 可以't将字符串转换为数字javascript我的代码出了什么问题
- 按布尔值,然后按数字(javascript)对对象数组进行排序
- 正则表达式,用于获取方括号之间的字符串和数字-javascript
- If和Else比较数字JavaScript
- 检查变量是网页上的所有数字javascript
- 同时检查模为0的两个不同数字(Javascript)