我正在構建一個計算器應用程序,並卡在檢查用戶選擇的值與服務器上的計劃數據集的部分。Javascript:如何根據數據對象數組檢查混合用戶輸入?
我使用的是這樣的四個數據滑塊:每當用戶滑動滑塊
,我值發回給我的腳本進行驗證和檢查。
現在這裏是靜態的數據集,我檢查了用戶的輸入對值:
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
現在我想做的是:
- 環比計劃數據,並檢查其計劃用戶選擇了:是
small
,medium
,large
等 - 拋出一個錯誤並重置滑塊,如果這些值超出有效範圍,即它們應該在之間和
to
範圍。 - 如果計劃是正確的,然後讓該計劃
我停留在第一步,現在的價格。這裏是我的代碼:
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
我在做什麼錯?我似乎無法環繞計劃數據並獲得正確的計劃。請幫忙。
既可以通過調試器或通過CONSOLE.LOG你應該在你checkPlaninRange功能驗證的參數值。如果你仍然不明白爲什麼邏輯失敗,請在這裏發佈。我懷疑你那裏的大邏輯檢查是不明顯的。這可能有助於將其分解爲4個if語句(不是長期的,但僅用於調試目的)。 –
@EricLaForce,傳遞給函數的參數與您在界面中選擇的值相同。至於調試器語句,請參閱我的問題中的最後五行代碼 - 即chrome控制檯輸出。 –