2017-12-02 6 views
0

時間以下のデータ構造を所定の範囲ハッシュ関数

[{ 
    start: 10.2, 
    end: 15.3, 
    text: 'Lorem Ipsum....' 
}, { 
    start: 16.3, 
    end: 20.5, 
    text: 'dolor sit...' 
}, { 
    start: 19.4, 
    end: 25.1, 
    text: 'consectetur adipiscing elit' 
}] 

Iが一定時間アクティブなテキストを把握する必要がある(要素2とをmaches例えば18、3)。私はすでに、指定された時間がstartよりも大きくendよりも小さいかどうかを調べるfindメソッドを実装しました。残念ながら、これは約25kのエントリほど効率的ではありません。私はキーとして開始と終了を計算し、与えられた時間に一致するエントリを返すハッシュマップの実装を探しています。

+0

私は述語法を試しました –

+0

はソートされたデータですか?もしそうなら、バイナリ検索を試みましたか? –

+0

@NinaScholzはいデータは、アプリケーションのinitで一度だけ開始または終了順に並べ替えることができます。バイナリ検索を見ていきます。 – zusatzstoff

答えて

0

それはソートされたデータについては

var arr=[{ 
 
    start: 10.2, 
 
    end: 15.3, 
 
    text: 'Lorem Ipsum....' 
 
}, { 
 
    start: 16.3, 
 
    end: 20.5, 
 
    text: 'dolor sit...' 
 
}, { 
 
    start: 19.4, 
 
    end: 25.1, 
 
    text: 'consectetur adipiscing elit' 
 
}] 
 

 
var condition=(arr)=>(arr.start>=18); 
 

 
var arr_1=arr.filter(condition); 
 
console.log(arr_1);

0

データをフィルタリングするために参考になりまし意志、あなたはスタートリストの途中でと希望日時場合ですbinary seachを取ることができますが小さい場合は、始点と中間点の真ん中、またはもう一方の真ん中の値をとります。アイテムが見つかるまで続行します。


は、ソートされていないデータに対しては、ハッシュキーと、リスト内のすべてのイベントのために週数の一環として年かかることがあります。

イベントが別の週に終了する場合は、イベントが発生したすべての週を含むハッシュテーブルにイベントのすべての参照を追加します。

渋滞の場合は、週番号を計算して、指定した週のデータを正確に検索してください。

週の代わりに、月の前半や月の後半など、1日以上の範囲のような短い範囲を取ることができます(これは1週間に計算する方が簡単です)。

関連する問題