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

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

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

Ionicは、クロスプラットフォームに対応したモバイルアプリ開発のためのオープンソースUIフレームワークです。iOSやAndroid、Webのアプリケーションを1つのコードベースで開発できます。

RxJS

RxJSは、Observablesを用いたリアクティブプログラミングのJavaScript向けの実装です。イベント駆動処理も含めた非同期処理を高い可読性を持って容易にコーディングできます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

983閲覧

【TypeScript】連想配列の要素の取得方法

irohamaru

総合スコア15

Ionic

Ionicは、クロスプラットフォームに対応したモバイルアプリ開発のためのオープンソースUIフレームワークです。iOSやAndroid、Webのアプリケーションを1つのコードベースで開発できます。

RxJS

RxJSは、Observablesを用いたリアクティブプログラミングのJavaScript向けの実装です。イベント駆動処理も含めた非同期処理を高い可読性を持って容易にコーディングできます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2017/11/14 01:08

以下のソース中の配列:fixCostListの要素取得の方法について質問です。

fixCostList[0]で0番目の要素を取得しようと思っているのですが、undefinedとなり取得できません。
例えば、fixCostList[0].amountと記述すれば、"1000"が取得できる想定だったのですが。。。

↓実際のログ出力の画面
イメージ説明

要素の取得方法について、どなたか教えていただけないでしょうか。

ts:home.ts

1import { Component, ViewChild } from '@angular/core'; 2import { NavController } from 'ionic-angular'; 3import { ActionSheetController } from 'ionic-angular'; 4import { AngularFireDatabase } from 'angularfire2/database'; 5 6@Component({ 7 selector: 'page-home', 8 templateUrl: 'home.html', 9}) 10 11export class HomePage { 12 constructor(public navCtrl: NavController, public actionsheetCtrl: ActionSheetController, 13 public afdb: AngularFireDatabase) { 14    15  // (省略) 16 17 } 18 19 getBopData(list, year, month, dayCount) { 20 21 // (中略) 22 23 // 固定費計算 24 let fixCostList = []; 25 // 固定費リストを取得 26 this.afdb.list('fixedCost') 27 .subscribe(list => { 28 list.forEach(item => { 29 fixCostList.push(item); 30 }) 31 }); 32 33 // ログにundefinedと出力されてしまう 34 console.log(fixCostList[0]); 35  36 // (以下省略)

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

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

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

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

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

guest

回答1

0

ベストアンサー

angularfireについては知りませんが、

lang

1 this.afdb.list('fixedCost') 2 .subscribe(list => { 3 list.forEach(item => { 4 fixCostList.push(item); 5 }) 6 }); 7 8 console.log(fixCostList[0]);

非同期にfixedCostを取得しているのでconsole.logの時点では取得できていないのだと思います。

chromeはconsole.logで配列を出力し、中身を展開しようとすると、「i」マークをマウスホバーすれば分かりますが、展開した時点での内容が表示されます。

投稿2017/11/14 01:37

karamarimo

総合スコア2551

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

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

irohamaru

2017/11/14 03:37

> karamarimoさん 回答ありがとうございます。 RxJSに慣れていなかったため、非同期ということに気づけていませんでした。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問