2015-12-01 30 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]); 
     }  
    }  
    } 
});