2013-02-06 71 views
1

我正在構建一個計算器應用程序,並卡在檢查用戶選擇的值與服務器上的計劃數據集的部分。Javascript:如何根據數據對象數組檢查混合用戶輸入?

我使用的是這樣的四個數據滑塊:每當用戶滑動滑塊

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 

現在我想做的是:

  • 環比計劃數據,並檢查其計劃用戶選擇了:是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 

我在做什麼錯?我似乎無法環繞計劃數據並獲得正確的計劃。請幫忙。

+0

既可以通過調試器或通過CONSOLE.LOG你應該在你checkPlaninRange功能驗證的參數值。如果你仍然不明白爲什麼邏輯失敗,請在這裏發佈。我懷疑你那裏的大邏輯檢查是不明顯的。這可能有助於將其分解爲4個if語句(不是長期的,但僅用於調試目的)。 –

+0

@EricLaForce,傳遞給函數的參數與您在界面中選擇的值相同。至於調試器語句,請參閱我的問題中的最後五行代碼 - 即chrome控制檯輸出。 –

回答

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不

+0

我認爲你是對的,但現在我得到了有效值和無效值的混合。我下一步應該做什麼來捕捉正確的計劃。有效的用戶輸入只能在這些範圍之一之間。 –

+1

查看你的數據類型將其限制爲值或值,即使它 Techmonk

+0

我是否也應該爲'> ='做同樣的事情? –

相關問題