2016-12-12 40 views
0

我試圖用lodash找到,如果存在對象的數組一個key,但它似乎並沒有找到他們,即使他們在那裏:Lodash _.some不工作

var dtRng = ["1420070400000","1422748800000","1425168000000", etc]; 

var scnFtprntDates = { "values": [ 
    { "key": "1420070400000", "values": 289819.9054 }, 
    { "key": "1422748800000", "values": 289819.9054 }, 
    { "key": "1425168000000", "values": 289819.9054 }, 
    etc 
]}; 

var scn2 = scnFtprntDates.values 
var lngth = scn2.length 

for (var q = 0; q < dtRng.length; q++) { 
    if (_.some([scn2], ["key", dtRng[q]])) { 
     console.log("found"); 
    } else { 
     console.log("not found"); 
    } 
} 

似乎返回所有not found在控制檯日誌...

+0

爲了幫助大家理解您的問題,請使用有意義的名稱,並且如果可能並使示例最小化。爲了這個問題,我認爲不需要有60個字符串和對象。 –

+0

請不要根據收到的答案更正問題的代碼,因爲這會使它們變得無關緊要。 –

回答

3

你包裹在您的收藏一個額外的arr ay,刪除方括號

if (_.some(scn2, ["key", dtRng[q]])) { 
    .... 
+0

它不是把它包括在括號裏嗎?試圖按照這個文檔... https://lodash.com/docs/4.17.2#some – user2061886

+0

@ user2061886'scn2'已經是一個數組了,不需要將它嵌套在一個新的數組中。在這個例子中,它是基元:'[null,0,'yes',false]'應該在數組中傳遞。 –

+0

檢出該鏈接的第三個示例,第一個參數應該是一個對象數組,其中'scn2'已經是。 –

0

你不需要爲lodash,這簡單的一行會爲你:

dtRng.forEach(k => { const result = scnFtprntDates.values.filter(obj => obj.key === k).length > 0 ? 'found' : 'not found'; console.log(k, result) }) 
相關問題