Javascript:如何针对数据对象数组检查混合用户输入?

时间:2013-02-06 12:45:24

标签: javascript arrays parsing for-loop

我正在构建一个计算器应用程序,并且卡在我检查用户根据我在服务器上的计划数据集中选择的值的部分。

我使用的四个数据滑块如下所示:

enter image description here

每次用户滑动滑块时,我都会将值发送回我的脚本以进行验证和检查。

现在这里是我正在检查用户输入的值的静态数据集:

plandata.data = [

            {       

                id: 'small',

                from: {
                    cpu: 1,
                    ram: 1,
                    hd: 40,
                    bw: 10
                },

                to: {
                    cpu: 2,
                    ram: 2,
                    hd: 500,
                    bw: 500
                },

                price: {
                    linux: 3490,
                    windows: 4190
                }

            },


            {

                id: 'medium',

                from: {
                    cpu: 2,
                    ram: 2,
                    hd: 40,
                    bw: 20
                },

                to: {
                    cpu: 4,
                    ram: 4,
                    hd: 500,
                    bw: 500
                },

                price: {
                    linux: 5600,
                    windows: 6300
                }

            },
  ...three more plans like this

现在我想做的是:

  • 循环计划数据并检查用户选择的计划:是smallmediumlarge
  • 如果值超出有效范围,则抛出错误并重置滑块,即它们应在fromto范围之间。
  • 如果计划正确,则获得该计划的价格

我现在第一步陷入困境。这是我的代码:

checkPlaninRange = function(cpuVal, ramVal, hdVal, bwVal) {
                    _.each(pdata, function(plan){

            if (cpuVal >= plan.from.cpu && cpuVal < plan.to.cpu 
                     && ramVal >= plan.from.ram && ramVal < plan.to.ram
                     && hdVal >= plan.from.hd && hdVal < plan.to.hd
                     && bwVal >= plan.from.bw && bwVal < plan.to.bw
                    ) 
            {
                console.log(plan.id, 'Plan Found');
            } else {
                console.log('plan not found');
            };

        });

}; 

问题是:我的结果好坏参与

plan not found plan.js:41
medium Plan Found plan.js:39

plan not found plan.js:41
medium Plan Found plan.js:39

plan not found plan.js:41
medium Plan Found plan.js:39

plan not found plan.js:41
medium Plan Found plan.js:39

plan not found 

我做错了什么?我似乎无法绕过循环计划数据并获得正确的计划。请帮忙。

1 个答案:

答案 0 :(得分:1)

if (cpuVal >= plan.from.cpu && cpuVal <= plan.to.cpu 
                 && ramVal >= plan.from.ram && ramVal <= plan.to.ram
                 && hdVal >= plan.from.hd && hdVal <= plan.to.hd
                 && bwVal >= plan.from.bw && bwVal <= plan.to.bw
                ) 

我猜你想要AND而不是OR