2016-12-12 46 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) }) 
相关问题