Javascript查询二维数组

Javascript查询二维数组,javascript,multidimensional-array,Javascript,Multidimensional Array,下面是我表格的一个小样本。我将收集用户数据,并返回一个速率。是否有库或模块来执行此类查询,或者我必须手动编写一些东西?因此,如果我的用户是23,goodDriver,没有家庭保险,那么费率应该是2.00。这需要在客户端,并在Chrome、FF、Safari和IE9中工作。谢谢 var rateTable = [ ["lowerAge", "upperAge", "goodDriver", "hasHomeInsurance", "rate"],

下面是我表格的一个小样本。我将收集用户数据,并返回一个速率。是否有库或模块来执行此类查询,或者我必须手动编写一些东西?因此,如果我的用户是23,goodDriver,没有家庭保险,那么费率应该是2.00。这需要在客户端,并在Chrome、FF、Safari和IE9中工作。谢谢

        var rateTable = [
        ["lowerAge", "upperAge", "goodDriver", "hasHomeInsurance",    "rate"],
        ["20",      "30",         true,         true,                1.00],
        ["20",      "30",         true,         false,               2.00],
        ["20",       "30",        false,        true,                3.00],
        ["20",       "30",        false,        false,               4.00]
    ]

正如其他人所建议的,我强烈建议您使用mySQL。然而,你有一个我似乎很感兴趣的问题,所以我试图解决它

这不是最有效的方法,但你可以这样做

您可以遍历数组中的每一行,并检查所有值是否与要检查的值相对应

该函数的工作原理如下:

function getRate(){
    // get all the values
    var age = parseInt($('#age').val());
    var goodDriver = $('input[name="goodDriver"]:eq(1)').is(':checked');
    var insurance = $('input[name="insurance"]:eq(1)').is(':checked');

    // check each row for a match
    for(var i=0; i<rateTable.length; i++){
        var row = rateTable[i];
        // if one is found, return the rate
        if (row[0]<=age && row[1]>=age && row[2]==goodDriver && row[3]==insurance)
            return row[4];
    }

    // if no match was found
    return false;
}
函数getRate(){
//获取所有值
var age=parseInt($('#age').val();
var goodDriver=$('input[name=“goodDriver”]:eq(1)')。是(':checked');
var insurance=$('input[name=“insurance”]:等式(1)')。是(':checked');
//检查每一行是否匹配

对于(var i=0;i而言,您希望重新构造数据,以便使用对象数组,这将使运行简单查询变得更加容易

如果您事先无法进行转换,请使用以下代码段进行转换:

var rates = rateTable.slice(1).map(function (row) {
    return this.reduce(function (obj, key, index) {
        obj[key] = row[index];
        return obj;
    }, {});
}, rateTable[0]);
对于转换后的数据查询,举个例子:

function getRate(age, goodDriver, hasHomeInsurance) {
    var rate = rates.find(function (rate) {
        return age >= rate.lowerAge &&
            age <= rate.upperAge &&
            rate.goodDriver === goodDriver &&
            rate.hasHomeInsurance == hasHomeInsurance;
    });
    return rate && rate.rate;
}
函数getRate(年龄、好司机、保险){
风险值比率=比率。查找(函数(比率){
返回年龄>=rate.lowerAge&&

您应该使用SQL或一些数据库,如果您想将数据存储在javascript数组中,那么结构应该是不同的,需要在客户端、Chrome、FF、Safari和IE 9+上工作。
var rates = rateTable.slice(1).map(function (row) {
    return this.reduce(function (obj, key, index) {
        obj[key] = row[index];
        return obj;
    }, {});
}, rateTable[0]);
function getRate(age, goodDriver, hasHomeInsurance) {
    var rate = rates.find(function (rate) {
        return age >= rate.lowerAge &&
            age <= rate.upperAge &&
            rate.goodDriver === goodDriver &&
            rate.hasHomeInsurance == hasHomeInsurance;
    });
    return rate && rate.rate;
}