我正在为公司开发自定义定价页面。他们已经休息了#39;在计算价格时。 (业务2业务)
实施例:
0 - 100名员工=价格12
101 - 500名员工=价格4
501 - 1001名员工=价格2
1001 - 1001名员工=价格2
..
现在,当员工数量为1250时,它必须计算它所在的类别,并从那里开始到最后一个类别来计算价格/类别 - >
示例:
1250名员工
0 - 100 =(100 - 1250)* 12
101 - 500 =(500 - 1150)* 4
501-1000 =(剩下的剩余部分; 650)* 2
example
那么你们可能会把我推向正确的方向吗?
非常感谢任何帮助!
编辑:
通过下面的答案我改写了我需要的东西。适用于需要在未来项目中使用它的人。我将在此发布:
Null被产品价格填补。
var boundaries =
[
[0, null],
[100, null],
[500, null],
[1000, null],
[3000, null],
[5000, null],
[10000, null]
];
var calculator = {
pricing : {},
solutionTotal: null,
init : function () {
},
calculate : function (id) {
var sum = 0;
var count = globalNumber;
var $selectedSolution = $('li[data-id=' + id + ']');
//fill up prices in boundaries array by id
for (var x = 0; x < boundaries.length; x++) {
boundaries[x][1] = $selectedSolution.attr('data-price-' + boundaries[x][0]);
}
//use boundaries array and prices
for (var i = boundaries.length; i > 0; i--) {
if (count > boundaries[i - 1][0]) {
sum += (count - boundaries[i - 1][0]) * boundaries[i - 1][1];
count = boundaries[i - 1][0];
}
}
this.solutionTotal = sum;
console.log('sum is ', this.solutionTotal);
}
};
答案 0 :(得分:0)
var em = 1250;
if (em > 1000) {sum4 = (em-1000)*2; em=1000;}
if (em > 500) {sum3 = (em-500)*2; em=500;}
if (em > 100) {sum2 = (em-100)*4; em=100;}
if (em > 0) {sum1 = em*12;}
console.log(sum1,sum2,sum3,sum4);
//print out: 1200,1600,1000,500
答案 1 :(得分:0)
您可以使用带有daltas的数组作为下一个价格,并使用金额计算价格,如果不是零,则获取数组的下一个元素并检查aunf调整金额并计算价格实际金额。
var prices = [[100, 12], [400, 4], [500, 2], [Infinity, 2]],
amount = 1250,
index = 0,
price = 0;
while (amount && index < prices.length) {
if (amount < prices[index][0]) {
price += amount * prices[index][1];
amount = 0;
} else {
price += prices[index][0] * prices[index][1];
amount -= prices[index][0];
}
index++;
}
console.log(price);
&#13;
与Array#some
相同。
var prices = [[100, 12], [400, 4], [500, 2], [Infinity, 2]],
amount = 1250,
price = 0;
prices.some(function (a) {
if (amount <= a[0]) {
price += amount * a[1];
return true;
} else {
price += a[0] * a[1];
amount -= a[0];
}
});
console.log(price);
&#13;