2015-12-01 29 views
0

我想將3個輸入匹配到一組數據。只有所有三項標準都符合標準,它纔會將所有這三項標準加到結果上。那些將在稍後顯示。我現在簡單地將數據集簡化爲一個對象。謝謝!爲什麼不能正常工作?過濾數據

var departureDate = $("#departure-date").val(); 
var returnDate = $("#return-date").val(); 
var city = $("#city").val(); 

var places = [{ 
    place: "New York City", 
    avalibleArival: ["3 December, 2015", "4 December, 2015"], 
    avalibleReturn: ["4 December, 2015", "6 December, 2015"] 
}]; 

var results = []; 
places.forEach(function (x) { 
    if (x.place === city) { 
    console.log("found city"); 
    places.forEach(function (y) { 
     if (y.avalibleArival === departureDate) { 
     console.log("Found correct Departure Date"); 
     places.forEach(function (z) { 
      if (z.avalibleReturn === returnDate) { 
      console.log("yay you found a Full match"); 
      results.push([x, y, z]); 
      } 
     }); 
     } 
    }); 
    } 
}); 
+4

線是不是有缺失的']''爲陣places'? –

+0

對不起,我的壞,沒有得到正確coppied。在我的代碼中有一個結束地點var – Alexg2195

+1

除了@IvanSivak,也是一個用於結束指令的';'。最後它會顯示爲'var places = [{......}];' –

回答

2

2分重要的事情是你的代碼錯誤,一個停止其工作,另一個是剛剛沒有必要

  1. 在代碼if (z.avalibleReturn === returnDate) {avalibleArival你是一個字符串比較的相似陣列,這永遠不會等於true

  2. 您正在循環places數組的每個循環內的places數組 - 這不僅僅是不必要的,但效率很低。你不需要這樣做。

我認爲你是什麼後沿

places.forEach(function (x) { 
    if (x.place === city) { 
    console.log("found city"); 
    if(x.avalibleArival.indexOf(departureDate) > -1){ 
     console.log("Found correct Departure Date"); 
     if(x.avalibleReturn .indexOf(returnDate) > -1){ 
      console.log("yay you found a Full match"); 
      results.push([x, y, z]); 
     }  
    }  
    } 
});