gpt4 book ai didi

javascript - 如何在 JavaScript 中对数字进行分组

转载 作者:行者123 更新时间:2023-11-30 10:01:49 25 4
gpt4 key购买 nike

所以我正在尝试创建一些逻辑来根据设备数量计算订阅方案。这个东西的定价有点奇怪,我遇到了困难,所以让我试着解释一下。

定价模型是这样的

1,2 个设备每个 15 美元(3、4、5)是固定的 10 美元(对于整个组)+ 最初的前两个设备,然后此模式无限期地重复。因此,让我进一步说明 1,2 (3,4,5) 6,7 (8,9,10) 这总共是 80 美元,我们有 4 台设备需要支付每台 15 美元的费用,然后是 2 组每个固定收费 10 美元,但这也适用于 1,2 (3,4,5) 6,7 (8,9,) 这仍然是 80 美元,因为这些组从第一个数字开始,所以 1,2 ( 3) 结果是 40 美元。所以我的问题是我不知道如何做到这一点。到目前为止,这是我的代码,如有任何帮助或指导,我们将不胜感激。我也有一种感觉,我是从一个完全错误的 Angular 来处理这个问题的。

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 

现在我们使用 remainder operator 得到剩余的:

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 中对数字进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31216941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com