Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:如何根据数据对象数组检查混合用户输入?_Javascript_Arrays_Parsing_For Loop - Fatal编程技术网

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

Javascript:如何根据数据对象数组检查混合用户输入?,javascript,arrays,parsing,for-loop,Javascript,Arrays,Parsing,For Loop,我正在构建一个计算器应用程序,我在服务器上检查用户选择的值与我的计划数据集 我使用的四个数据滑块如下所示: 每次用户滑动滑块时,我都会将值发送回脚本进行验证和检查 下面是我检查用户输入的静态数据集: plandata.data = [ { id: 'small', from: { cpu: 1, ram: 1

我正在构建一个计算器应用程序,我在服务器上检查用户选择的值与我的计划数据集

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

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

下面是我检查用户输入的静态数据集:

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
现在我想做的是:

  • 循环查看计划数据并检查用户选择的计划:是
    小计划
    中计划
    大计划
  • 如果值超出有效范围,即它们应该在
    范围之间,则抛出错误并重置滑块
  • 如果计划是正确的,那么就得到该计划的价格
我现在被困在第一步。这是我的密码:

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');
            };

        });

}; 

我做错了什么?我似乎无法在计划数据中找到正确的计划。请提供帮助。

如果(cpuVal>=plan.from.cpu&&cpuVal=plan.from.ram&&ramVal=plan.from.hd&&hdVal=plan.from.bw&&bwVal
如果(cpuVal>=plan.from.cpu&&cpuVal=plan.from.ram&&ramVal=plan.from.hd&&hdVal=plan.from.bw&&bwVal通过调试器或console.log,您应该验证checkPlaninRange函数中的参数值。如果您仍然看不到逻辑失败的原因,请将这些参数值张贴在此处。我怀疑您的大逻辑检查。它可能有助于将其分解为4个if语句(不是长期的,只是为了调试目的).@EricLaForce,传递到函数中的参数与您在界面中看到的值相同。至于debugger语句,请参阅我问题中的最后五行代码-即chrome控制台输出。通过debugger或console.log,您应该验证checkPlaninRange函数中的参数值。如果您仍然不明白逻辑失败的原因,请将其张贴在此处。我怀疑您的大逻辑检查中有一些不明显的地方。将其分解为4个if语句可能会有所帮助(不是长期的,但仅用于调试器目的)@EricLaForce,传递到函数中的参数与您在界面中看到的值相同。至于debugger语句,请参阅我问题中的最后五行代码-即chrome控制台输出。我认为您是对的,但现在我得到的是有效值和无效值的混合。我接下来应该做什么来获取正确的计划。有效的用户输入必须介于这两个范围之间。查看您的数据类型将其限制在值或从值,即使其=
?不,这两种方法都不起作用-我只是没有得到正确的计划。您认为提供给我的数据有缺陷吗在某种程度上被忽略了?不,看数据不。看看你想在计划中得到什么值,你就会发现它。我认为你是对的,但现在我得到了一个有效值和无效值的混合。下一步我应该做什么来捕获正确的计划。有效的用户输入必须在这些范围中的一个范围内。看你的数据类型将其限制为值或者从值,即使其>=
也这样做吗?不,这两件事都不起作用-我只是没有得到正确的计划。你认为提供给我的数据在某种程度上有缺陷吗?不,看看数据不。看看你希望在计划中得到什么值,你会找到答案的
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
                ) 
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
                )