2017-01-21 65 views
0

我想比較變量determineHour與數組stationRentalsHours,每當變量將等於一個stationRentalsHours元素,我想將該元素添加到另一個數組(stationRentalsHoursTemp) ,但只有匹配的值。我嘗試過使用簡單的運算符,但不會將任何內容放入臨時數組中。我也嘗試使用JQuery $ .inArray,但是這給了我一些奇怪的結果,等於原始數組中的結果。有沒有其他方法比較一個變量和一個數組爲這個特定的任務?javascript只獲取數組元素相當於變量

謝謝你的幫助。

function updateChart() { 
    if(canvas3){canvas3.destroy();} 

    var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML; 
    for (var i = 0; i < stationRentalsHours.length; i++) { 
     /*if(determineHour == stationRentalsHours){ 
     stationRentalsHoursTemp.push(stationRentalsHours[i]);*/ 
     if($.inArray(determineHour, stationRentalsHours[i])){ 
     stationRentalsHoursTemp.push(stationRentalsHours[i]); 
    } 
} 

回答

0

在這種情況下,而不是使用$ .inArray,你可以簡單地使用for循環,並測試索引平等。我想你混淆了兩兩件事:

var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML; 
for (var i = 0; i < stationRentalsHours.length; i++) { 
    if(determineHour == stationRentalsHours[i]){ 
     stationRentalsHoursTemp.push(stationRentalsHours[i]); 
    } 
} 

更重要的是,使用過濾器:

var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML; 
stationRentalsHoursTemp = stationRentalsHours.filter(function(val){return val == determineHour;}); 
0

而不是

if($.inArray(determineHour, stationRentalsHours[i])){

嘗試

if($.inArray(determineHour, stationRentalsHours) != -1){

0

你註釋掉的代碼會做的伎倆有輕微修訂if條件。你原來的條件數組中比較字符串數組,而不是一個單獨的元素:

function updateChart() { 
    if(canvas3){ 
    canvas3.destroy(); 
    } 
    var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML; 
    for (var i = 0; i < stationRentalsHours.length; i++){ 
    if(determineHour == stationRentalsHours[i]){ 
     stationRentalsHoursTemp.push(stationRentalsHours[i]); 
    } 
    } 
}