JS:如何将数字分成几类? (0-100,101-500,......)

时间:2017-06-22 09:19:33

标签: javascript jquery

我正在为公司开发自定义定价页面。他们已经休息了#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);
    }
};

2 个答案:

答案 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调整金额并计算价格实际金额。

&#13;
&#13;
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;
&#13;
&#13;

Array#some相同。

&#13;
&#13;
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;
&#13;
&#13;