2013-01-21 7 views
19

Próbuję sprawdzić, czy któryś z dni są '01 -01' (na początku roku)Korzystanie z _.some | _.any właściwie dla lo-myślnikiem lub podkreślenia

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

Daje to szereg dat w moim konsoli:

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

więc biegnę bez console.log jak tak ..:

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

I powraca:

false 

Dziwne, co? Jak myślisz, co robię niewłaściwie?

Odpowiedz

43

Źle zrozumiałeś, jaki jest ostatni argument dla _.some. documentation pokazuje, że jest to context lub zakres, w którym działa funkcja iteratora, ale wygląda na to, że próbujesz użyć go jako wartości do testowania równości.

Musisz samodzielnie wykonać test równości.

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

Wygląda na to, że nie rozumiesz, jak używać _.some(). Zapoznaj się z documentation, a zobaczysz, że twoja funkcja musi zwrócić true lub false, a ostatni argument będzie używany jako this w funkcji tat.

Trzeba to zrobić w zamian:

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

dziękuję dziękuję dziękuję. Jest to absolutnie poprawne. Mogłem tylko wybrać jedną, więc poszedłem z underdog :( – Trip

Powiązane problemy