質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

1083閲覧

JSでオブジェクトの中身が取り出せない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

1クリップ

投稿2017/07/21 06:40

編集2017/07/21 07:58

Javascriptで、オブジェクトを扱っています。
以下のようにして取り出そうとおもっても
undefinedになってしまいます。

javascript

1var routeInfo = {}; 2routeInfo.distance = "hoge"; 3routeInfo.duration_in_traffic = "huga"; 4 5console.log(routeInfo.distance);

ちなみに、console.log(routeInfo)だけで出力した場合は
以下のようになります。

Object {}
distance
:
"hoge"
duration_in_traffic
:
"huga"
proto
:
Object

ご教示いただければ幸いです。
よろしくお願いいたします。

▼追記
以、実際のコードです。
以下のようにして定義した関数を実行した時、returnでrouteInfoが返ってきます。
routeInfoはオブジェクトで、routeInfo.distとrouteInfo.dist_in_traffic で値が取り出せるはずです。

javascript

1// ============= 2// ▼ 所要時間 3// ============= 4function getTimes(distanceMatrixService,latlng,GPS){ 5 var routeInfo = {}; 6 var origins = [ 7 new google.maps.LatLng(GPS), 8 ]; 9 var destinations = [ 10 latlng, 11 ]; 12 distanceMatrixService.getDistanceMatrix({ 13 origins: origins, // 出発地点 14 destinations: destinations, // 到着地点 15 travelMode: google.maps.TravelMode.DRIVING, // 車モード or 徒歩モード 16 drivingOptions: { // 車モードの時のみ有効 17 departureTime: new Date(Date.now() + 3600000), // 2017年5月5日 18 trafficModel: google.maps.TrafficModel.BEST_GUESS // 最適な検索 19 } 20 }, function(response, status) { 21 routeInfo.dist = response.rows[0].elements[0].distance.text; 22 if(response.rows[0].elements[0].duration_in_traffic.text){ 23 routeInfo.dist_in_traffic = response.rows[0].elements[0].duration_in_traffic.text; 24 } 25 }); 26 return routeInfo; 27} 28// ============= 29// ▲ 所要時間 30// =============
Lichtenstein👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2017/07/21 07:14

気づいているかもしれませんが、提示のコードでは再現しません。再現するコードはないのでしょうか?
guest

回答4

0

ベストアンサー

getDistanceMatrixがどんなメソッドか知りませんが、第二引数のfunction(response, status)からして、非同期に返ってくるものですよね?

console.log(routeInfo.distance)では、値渡しになり、呼び出されたその瞬間の変数の状態(=まだ戻ってきてないのでundefined)になり、console.log(routeInfo)では、オブジェクト参照なので、コンソールで作業してる時点では値が設定されているので見れる、ということのようですね。

投稿2017/07/21 08:14

zohnam

総合スコア1441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/21 08:16

なるほど。。。 どうしたら表示されるようになりますか?
zohnam

2017/07/21 08:26

function(response, status) {}の中に console.log入れちゃうのがいいですね。
退会済みユーザー

退会済みユーザー

2017/07/21 09:00

なるほど! やってみます
guest

0

僕のchromeでは出力されるようです!

イメージ説明

投稿2017/07/21 07:18

MasakazuFukami

総合スコア1869

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

特に不審な点はありませんね…
実際のコードでスペルミスをしていないのか、もう一度よく確認してください。
また、他の行で出力しているconsole.logの結果と混同している可能性もあります。
ちょっとしたコツですが、

javascript

1console.log(["distance",routeInfo.distance]);

のように、表示しようとした変数名といっしょに出力すれば、本当にそのconsole.logで出力しようとしていたのかを確認しやすいですよ。

投稿2017/07/21 07:18

zohnam

総合スコア1441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/21 07:55

他の場所ではconsole.log()を使っていません。 本文に追記します。
guest

0

気になるようなら、以下のような管理をされてはいかがでしょうか?

javascript

1function setObj(){ 2 this.distance=null; 3 this.duration_in_traffic=null; 4 this.setDistance=function(val){ 5 this.distance=val; 6 } 7 this.getDistance=function(){ 8 return this.distance; 9 } 10 this.setDuration_in_traffic=function(val){ 11 this.duration_in_traffic=val; 12 } 13 this.getDuration_in_traffic=function(){ 14 return this.duration_in_traffic; 15 } 16 return this; 17} 18var routeInfo = setObj(); 19routeInfo.setDistance("hoge"); 20routeInfo.setDuration_in_traffic("huga"); 21console.log(routeInfo.getDistance()); 22console.log(routeInfo.getDuration_in_traffic()); 23

投稿2017/07/21 08:04

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問