[解決済み] JavaScriptの配列の最後の要素を選択する [重複]。
質問
ユーザーの位置と経路をリアルタイムに更新し、Google Map上に表示するアプリケーションを作っています。オブジェクトを使って複数のユーザーを同時に追跡し、それを1秒ごとに更新する機能があります。
今は、ユーザーがAndroidアプリのボタンを押すと、その座標がデータベースに送られ、位置が変わるたびに地図上のマーカーが更新される(ポリラインが形成される)ようになっています。
複数のユーザーがいるので、ユーザーごとに個別のパスを表示できるように、ユニークでランダムに生成される英数字の文字列を送信しています。JSがデータベースからこのデータを取得するとき、ユーザーが存在するかどうかをチェックし、存在しない場合は新しいキーを作成し、その値をリストとして使用します。以下のような感じです。
loc = {f096012e-2497-485d-8adb-7ec0b9352c52: [new google.maps.LatLng(39, -86),
new google.maps.LatLng(38, -87),
new google.maps.LatLng(37, -88)],
44ed0662-1a9e-4c0e-9920-106258dcc3e7: [new google.maps.LatLng(40, -83),
new google.maps.LatLng(41, -82),
new google.maps.LatLng(42, -81)]}
私がやっているのは、ユーザーのIDであるキーの値として、座標のリストを保存することです。私のプログラムは、場所が変更されるたびに、リストに追加してこのリストを更新し続けます(これは正常に動作します)。
必要なのは、場所が変わるたびにマーカーの位置を更新することです。配列の最後の項目を選択することでこれを行いたいのですが、これが最後の既知の位置となります。現在、場所が変わるたびに新しいマーカーがマップに追加されるため、マーカーは追加され続けています(例の各ポイントはその場所にマーカーを表示します)。
位置が更新されるたびに´for (x in loc)` ステートメントを使用して、リストから最後の位置を取得し、それを使用してマーカーを更新することになります。この最後の要素をハッシュ内の配列から選択するにはどうすればよいでしょうか。
どのように解決するのですか?
配列の最後の要素にアクセスする方法
そのように見えます。
var my_array = /* some array here */;
var last_element = my_array[my_array.length - 1];
あなたの場合、次のようになります。
var array1 = loc['f096012e-2497-485d-8adb-7ec0b9352c52'];
var last_element = array1[array1.length - 1];
あるいは、もっと長いバージョンでは、新しい変数を作成せずに、このようにします。
loc['f096012e-2497-485d-8adb-7ec0b9352c52'][loc['f096012e-2497-485d-8adb-7ec0b9352c52'].length - 1];
よりシンプルに取得するためのメソッドを追加する方法
もしあなたが、そのような作業を実現するための関数/ショートカットを作成するファンであれば、次のコードを参照してください。
if (!Array.prototype.last){
Array.prototype.last = function(){
return this[this.length - 1];
};
};
を使用すると、配列の最後の要素を取得するために、配列の
last()
メソッドで、例えば
loc['f096012e-2497-485d-8adb-7ec0b9352c52'].last();
ここで、動作確認ができます。 http://jsfiddle.net/D4NRN/
関連
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
JavaScriptの配列共通メソッド解説
-
Vueのフィルタの説明
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] 配列の最後の項目を取得する