特定の日を除外したい日付の配列を取得しました。これは私の以前の解決策であり、正常に機能します。
var available = dates.filter(function(e) {
return (
e.getDay() != 0 && // sunday
e.getDay() != 6 && // saturday
e.getDay() != 2 && // tuesday
e.getDay() != 3 && // wednesday
);
});
今、私はこれを動的にしたいです。だから私はこのような配列を手に入れました:
var unavailable = [0, 2, 3, 6]
そして、私はこのようにそれらの日を除外しようとします:
unavailable.forEach(function(x){
available = dates.filter(function(e, index){
return e.getDay() != x;
});
});
それはうまくいっていないようです。私は何を間違えましたか、そしてどうすればこれを機能させることができますか?前もって感謝します。
比較の順序を切り替えて、チェックの結果を返す必要があります。この場合、フィルタリングの結果が必要なため、のArray#every
代わりにArray#forEach
必要です。
available = dates.filter(function(e, index) {
return unavailable.every(function(x) {
return e.getDay() != x;
});
});
Array#some
返された結果と否定された比較の否定と同じです。
available = dates.filter(function(e, index) {
return !unavailable.some(function(x) {
return e.getDay() === x;
});
});
より短いアプローチ。
var unavailable = [0, 2, 3, 6]
available = dates.filter(e => !unavailable.includes(e.getDay()));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加