anglejsのアプリケーションでは、文字列ではなくユニークな日付の配列だけを返すためにフィルタリングする必要がある配列の配列を受け取ります。私はSOの答えのいくつかを試しましたが、私は文字列ではなく日付を比較していると思います。私は別の結果を生み出しています。最良のアプローチが何であるかについての助けは非常に役に立ちます。 日付配列からユニークな日付の配列を返します
1
A
答えて
1
あなたが正しいです、日付平等は文字列の平等とは異なります。 2つの日付は決して互いに等しいことはありません。それでは、ただ文字列に日付を入れてみましょう:
indexOf
と
let dates = [new Date(), new Date('1/1/11'), new Date('1/1/11'), new Date('1/4/66')]
let uniqueDates = dates
.map(s => s.toString())
.filter((s, i, a) => a.indexOf(s) == i)
.map(s => new Date(s));
console.log(uniqueDates);
ロジックは、すべての一意の値のみ、自身の位置に存在しなければならないということです。他のものは重複しています(sは現在のアイテム、iは現在のインデックス、aは配列そのものです)。次に配列をDates
にマップして返します。
1
あなたはlodashを使用している場合:
const date1 = new Date();
const date2 = new Date();
const arr = [date1, date1, date2, date2];
const uniqueDates = _.uniqBy(arr, date => date.getTime());
は、我々は彼らの値によってだけではなく、オブジェクトのアイデンティティで日付を比較することを確実にするためにuniqBy
を使用します。ここをクリックしてください:Compare two dates with JavaScript
関連する問題
- 1. ベース配列(日付付き)ハイライト日付ピッカー日付
- 2. JSON配列からPHP日付時刻
- 3. 配列とPHPの日付
- 4. javascript配列の日付エラー
- 5. 日付でPHP配列グループ
- 6. fullcalendarのPHPで配列の日付を繰り返します。
- 7. PHPで配列の日付を繰り返します
- 8. 日付の配列を異なる日付形式の文字列の配列に変更する - JavaScript
- 9. 日付の配列に日付パイプを使用するAngular2
- 10. 日付の複雑な配列操作
- 11. 日付配列から個々の日付をエコーする方法は?
- 12. 日付ピッカー - データベースとsetSpecificDate配列の予約日付をロード
- 13. 2つの日時配列の間に繰返し日付があります
- 14. 日付の配列の日付の書式変更
- 15. python idの日付範囲からユニークな日付を検索
- 16. ブートストラップ - datesDisabledの日付と日曜日と土曜日の配列
- 17. PHPの配列から新しい日付を作成する
- 18. 日付文字列の配列を日付オブジェクトの配列に変換する方法Swift
- 19. 既存の配列から日付で配列を作成する
- 20. 配列データに基づいてブロック日付ピッカー日付
- 21. PHPの日付上の配列のマージ
- 22. availabiltyカレンダーから選択した日付の配列を取得
- 23. 他の配列と日付でPHP配列をソート
- 24. 配列内の現在の日付フィールド
- 25. forループによる日付の配列
- 26. 配列内の日付範囲、ruby
- 27. 配列は、最新の日付
- 28. 日付範囲内の配列ドキュメントを返す
- 29. PHP 5.3 assoc配列の日付オブジェクトをエコーしますか?
- 30. この配列を日付順に変更しましたか?
ありがとうございます - あなたのコードのリファクタリングは、上にチェリーでした。文字列に変換してから日付を戻すというアイデアを無視して前回よりも複雑化していたと思います。 – chris
問題ありません!それを考えると、 '.toString()'を '.getTime()'に置き換える方が簡単です。それは単純な数、エポック時間として日付を返します。クリーナーで、文字列を比較するよりも少し効率的です。 – joh04667