Jquery - 在包含4个变量的数组中查找值

时间:2016-04-27 11:30:24

标签: jquery arrays search

我想创建包装费计算器。 我创建了几个滑块。有高度,宽度,长度和重量滑块。在用户设置所有滑块后,我想从阵列中检索费用。 最好的方法是什么?

使用数据链接到表:https://services.amazon.co.uk/services/fulfilment-by-amazon/pricing.html

链接到我的工具:http://tests.uk4u.pl/amazonProfitCalc/

我做了什么:

var slider_length_value = $(".slider-length").slider("value");
var slider_width_value = $(".slider-width").slider("value");
var slider_height_value = $(".slider-height").slider("value");

var slider_weight_value = $(".slider-weight").slider("value");   

var fullfilmentFee = Array({
        "packaging": "Small Envelope",
        "length": "20",
        "width": "15",
        "height": "1",
        "weight": "100",
        "fee": "1.07"
    },

    {
        "packaging": "Standard Envelope",
        "length": "33",
        "width": "23",
        "height": "2.5",
        "weight": "100",
        "fee": "1.19"
    }, {
        "packaging": "Standard Envelope",
        "length": "33",
        "width": "23",
        "height": "2.5",
        "weight": "250",
        "fee": "1.31"
    }, {
        "packaging": "Standard Envelope",
        "length": "33",
        "width": "23",
        "height": "2.5",
        "weight": "500",
        "fee": "1.51"
    },

    {
        "packaging": "Large Envelope",
        "length": "33",
        "width": "23",
        "height": "5",
        "weight": "1000",
        "fee": "1.70"
    },

    {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "250",
        "fee": "1.66"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "500",
        "fee": "1.72"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "1000",
        "fee": "1.77"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "1500",
        "fee": "2.19"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "2000",
        "fee": "2.41"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "3000",
        "fee": "3.30"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "4000",
        "fee": "3.40"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "5000",
        "fee": "3.40"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "6000",
        "fee": "3.45"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "7000",
        "fee": "3.45"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "8000",
        "fee": "3.53"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "9000",
        "fee": "3.53"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "10000",
        "fee": "3.53"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "11000",
        "fee": "3.53"
    }, {
        "packaging": "Standard Parcel",
        "length": "45",
        "width": "34",
        "height": "26",
        "weight": "12000",
        "fee": "3.54"
    }
);


var fee = $.map(fullfilmentFee, function(value, key) {
    if (value.length == "33") {
        //return value.fee;
        return value.fee;

    } else {
        $(".message").html("Error!!!");
    }
});
//console.log(price);
//output: $220
$(".message").html(fee);

编辑:

也许。用户prepars包和使用滑块设置此包的长度宽度高度和重量。接下来,他按下提交按钮并获得与那些昏暗和重量相对应的履行费用。如果所有dims与数组完全相同,那么非常简单:

  1. 如何制作条件,其中dims在数组之间,如

    之间

    履行[0]。长度和履行[1] .length

  2. 如果一个或多个变量(长度或宽度或高度或重量)的值高于正常范围,我希望得到与此值相对应的费用。

  3. 对我的英语表示抱歉和抱歉

2 个答案:

答案 0 :(得分:0)

你有一个带有对象的数组,所以我们可以做一个简单的循环来迭代数组单个对象,我们可以从费用中获得费用金额。键入每个数组对象,如下所示:

function getCalculatedFee(fullfilmentFee){
        var fullAmount = 0;

        for(var i=0; i<=fullfilmentFee.length; i++){
           fullAmount += fullfilmentFee[i].fee;
        }

        return fullAmount;
    }

要获得单个值,请尝试以下操作:

fullfilmentFee[0].fee

根据您的示例,您可以制作4个功能,这些功能可以获得准确值(如长度)的费用:

function getFeeByLength(slider_length_value){
    $.each(fullfilmentFee, function(value, key) {
        if (value.length == slider_length_value) {
            return value.fee;
        }
    });
}

和其他用户选择的值相同。使用此功能,您可以随时调用您的函数 - 确切地说您需要匹配值。

答案 1 :(得分:0)

不太确定您要执行的操作,但您可以访问数组项的变量。你只需做fullfilmentFee[i].fee。通过执行fullfilmentFee[i],您可以获得数组中的i项,并且您可以通过.andTheVariable访问该项的变量,因此它将是:.packaging.length.width.height.weight.fee

示例:

fullfilmentFee[0].fee返回1.07

fullfilmentFee[1].fee返回1.19

这就是你要找的东西吗?

[编辑]

我将在这里回答。 您必须检查哪个i的长度为19.要执行此操作,请检查整个数组,并查看长度为19的数据,获取费用:

var feeForLength19; // where we are going to store the fee

// run the whole array
for(var i=0;i<=fullfilmentFee.length;i++){
    // for the variable that has length 19, we store his fee
    if(fullfilmentFee[i].length == 19){
        feeForLength19 = fullfilmentFee[i].fee;
    }
}