を探します。言い換えるのは、JSに我々はイベントオブジェクトの次の配列を持っていると仮定してみましょう:私は、配列の<strong>キー</strong>がイベントの<em>のUnixタイムスタンプ</em>ある「<em>イベント</em>」の配列を扱っています最も近い配列のインデックス
var MyEventsArray=[];
MyEventsArray[1513957775]={lat:40.671978333333, lng:14.778661666667, eventcode:46};
MyEventsArray[1513957845]={lat:40.674568332333, lng:14.568661645667, eventcode:23};
MyEventsArray[1513957932]={lat:41.674568332333, lng:13.568661645667, eventcode:133};
and so on for thousands rows...
データはアヤックスコールに沿って送信され、JSで処理するJSONでエンコードされています。データセットが受信されると、別のUnix Timestampが別のソースから来て1513957845と言って、その時に起こったイベントを見つけたいと思っています...それはかなり簡単です。指定されたインデックス(上記のリストの2番目のインデックス)。 質問:特定のインデックスが見つからないことを想像してください(私たちはUXTimestamp = 1513957855を探しています)、このインデックスは配列には存在しませんでしたが、は最も近いインデックスをとります要素MyEventsArray [1513957845]を取得します(インデックス1513957845は1513957855に最も近い)。この結果を得るために私は何ができますか? 配列を受け取ったときに配列インデックスを扱うのが難しいです。インデックスの開始位置がわかりません。
どのようにマシンがそのような状況を処理するのですか? マシンは、各行の間に置かれたダミー/空の要素のためにメモリを割り当て(そして無駄に)使用しますか、コンパイラはそれ自身のインデックスを構築して領域を最適化する何らかの能力を持っていますか?言い換えれば、私たちがやっているようインデックスで再生するには、それが安全であるか、として配列を割り当てる方が良いでしょう:
この場合var MyEventsArray=[];
MyEventsArray['1513957775']={lat:40.671978333333, lng:14.778661666667, eventcode:46};
MyEventsArray['1513957845']={lat:40.674568332333, lng:14.568661645667, eventcode:23};
MyEventsArray['1513957932']={lat:41.674568332333, lng:13.568661645667, eventcode:133};
and so on for thousands rows...
キーとインデックスが明確にそれを取得することが可能ですので、ここで異なっています私たちがキー値を知らないにもかかわらず、最初の要素はMyArray [0]です。この方法はメモリの面でより高価です(ここではインデックスとキーを保存する必要があります)か、エフェクトはコンパイラで同じですか?
賢い解決策、私はObject.keys()を過小評価しました。それはまさに私が探していたものです。 –