2016-11-30 35 views
1

我試圖將2個數組傳遞給一個函數,該函數通過數組2對數組1進行過濾,然後返回過濾的結果。Array.some不是函數

我不理解爲什麼我收到以下錯誤: 「遺漏的類型錯誤:arr2.some是不是一個函數」

功能代碼:

function filterTF(arr1,arr2) 
{ 
    return arr1.filter(function(el) 
    { 
     return arr2.some(function(e) 
     { 
      return el.timeframe == e; 
     }); 
    }); 
} 

陣列1:

[ 
    {"time":"2016-11-30 02:45:00","signal":"Buy","symbol":"AUDNZDecn","price":"1.04605","timeframe":"M15","epoch":"1480473900","candel":"M151480481100"},{"time":"2016-11-30 02:41:00","signal":"Sell","symbol":"AUDJPYecn","price":"84.08700","timeframe":"M1","epoch":"1480473660","candel":"M11480480860"},{"time":"2016-11-30 02:24:59","signal":"Buy","symbol":"EURNZDecn","price":"1.48820","timeframe":"M5","epoch":"1480472699","candel":"M51480479900"} 
] 

Array 2:

5,15 
在運行功能

代碼:

var timeframearr = localStorage.getItem("timeframe"); 

if(timeframearr.length === 0) 
{ 
    console.log("Wings - Timeframe Set: False"); 
    var timeframearr = []; 
} 
else 
{ 
    var j = filterTF(j,timeframearr); 
} 

注: j等於一個JSON解析從一個AJAX查詢一個可與一個PHP腳本,其傳遞迴JSON響應,上述陣列又名服務器響應。如果timeframearr的長度等於0,或者它存在於本地存儲中,那麼它會從此處獲取它。這使timeframearr在本地存儲

代碼:

if ($('#timeframe-checkbox1').is(":checked")) 
{ 
    var t1 = $('#timeframe-checkbox1').val(); 
    console.log($('#timeframe-checkbox1').val()); 
    timeframearr.push(t1); 
} 

if ($('#timeframe-checkbox2').is(":checked")) 
{ 
    var t2 = $('#timeframe-checkbox2').val(); 
    console.log($('#timeframe-checkbox2').val()); 
    timeframearr.push(t2); 
} 

if ($('#timeframe-checkbox3').is(":checked")) 
{ 
    var t3 = $('#timeframe-checkbox3').val(); 
    console.log($('#timeframe-checkbox3').val()); 
    timeframearr.push(t3); 
} 

localStorage.setItem("timeframe", timeframearr); 

目標:我試圖完成/明白是怎麼做的過濾器由多個陣列的「時間表」值的時間,這樣當用戶點擊三個時間範圍的任何一個組合的複選框時,我可以從複選框中提取值並通過用戶選擇的任何複選框組合來過濾數組。恩。 「M1」,「M5」,「M15」,「M1,M5」或M1,M15「或M5,M15」或「M1,M5,M15」等。

返回/過濾的新數組將被傳遞給每個循環的jquery,然後將遍歷數據並將數據附加到div。 (我已經有這部分工作)

感謝任何指導!

+0

'''5,15''' - 你的意思' ''[5,15]'''? - 否則'''5,15'''不是一個數組......它只是一個字符串。 – tymeJV

+0

你確定* JSON被解析了嗎?跡象表明事實並非如此。 –

+0

tymeJV是正確的,如果你從localStorage得到的值,你將不得不拆分字符串。 .split(',') – inoabrian

回答

4

我認爲問題是你的localStorage - 這會將你的數組轉換爲一個字符串(逗號分隔)。你應該做的是stringify設置localStorage和解析的出路之前:

localStorage.setItem("timeframe", JSON.stringify(timeframearr)); 

,並拉出一個數組

var arr = JSON.parse(localStorage.getItem("timeframe"));