2013-01-21 46 views
19

我想看看是否有任何的日子是'01 -01' (今年年初)使用_.some | _.any正确的LO-划线或下划线

_.some(a.days, function(day){ console.log(day.date.format('DD-MM')) }, "01-01") 

生成此阵的日期在我控制台:

01-01 
02-01 
03-01 
04-01 
05-01 
06-01 
07-01 

于是我跑不console.log像这样..:

_.some(a.days, function(day){ day.date.format('DD-MM') }, "01-01") 

,并返回:

false 

奇怪,呃?你觉得我做错了什么?

回答

43

您误解了_.some的最后一个参数。 documentation表明它是context或作用域,迭代器函数在该作用域下运行,但似乎您试图将其用作平等测试的值。

您需要自己明确执行相等性测试。

_.some(a.days, function(day) { 
    return day.date.format('DD-MM') === "01-01"; 
}); 
16

您似乎误解了如何使用_.some()。请参阅documentation,您将看到您的函数需要返回truefalse,最后一个参数将在tat函数中用作this

你需要做这个:

_.some(a.days,function(day){ return day.date.format("DD-MM") == "01-01";}); 
+6

谢谢谢谢谢谢。这是绝对正确的。我只能选择一个,所以我与失败者一起去:( – Trip