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
)