1. ホーム
  2. javascript

[解決済み] JavaScriptの配列の最後の要素を選択する [重複]。

2022-03-14 07:21:28

質問

ユーザーの位置と経路をリアルタイムに更新し、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/