web-dev-qa-db-ja.com

_.someの使用| _.anyを適切にローダッシュまたはアンダースコアに

いずれかの日が'01 -01 '(年の初め)であるかどうかを確認しようとしています

_.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

奇妙な、え?私は間違って何をしていると思いますか?

24
Trip

_.someの最後の引数が何であるかを誤解しています。 documentation は、それがcontextまたはスコープであることを示します。その下でイテレータ関数が実行されますが、等価テストの値として使用しようとしているようです。

自分で等値性テストを明示的に実行する必要があります。

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

_.some()の使用方法を誤解しているようです。 ドキュメント を参照すると、関数がtrueまたはfalseを返す必要があり、最後の引数がthisとして使用されることがわかります。 tat関数。

代わりにこれを行う必要があります:

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