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

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

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

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

Q&A

解決済

3回答

146閲覧

配列から値を取り出したい

miyabeam

総合スコア16

JavaScript

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

0グッド

0クリップ

投稿2019/04/03 06:54

やりたいこと

APIをかいして取得した情報の中から特定の条件にマッチするものを取り出したいです。

ためしたこと

まず配列に値を格納しました。

JavaScript

1// A・Bはいずれも文字列 2const arr = []; 3arr[取得した情報の種類A]=取得した情報の種類B;

この状態でarrconosole.log すると値は正常に格納できていることが確認できました。
ただarrArray[0]となっていて、ここが原因ではないか?と思っています。

次に情報Aの値がfooだった時の情報Bを取り出したいです。

JavaScript

1const hoge = arr['foo'];

fooarryの中に存在するにも関わらず、undefinedとなってしまいます。

Bを取り出すにはどうすればいいでしょうか?
よろしくお願いします。

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

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

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

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

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

Lhankor_Mhy

2019/04/03 07:02

当方の環境では、ご提示のコードで『foo はarryの中に存在するにも関わらず、undefinedとなってしまいます。』という問題が再現できませんでした。問題なく取得できています。 環境の問題か、ここにご提示いただいていない部分のコードや情報に原因があると思います。
guest

回答3

0

ベストアンサー

JavaScriptの配列は連想配列ではありません。
配列と連想配列の境界線が曖昧なPHPという言語が特殊なだけです。

単純にJavaScriptはオブジェクト指向言語なので、
nullundefinedを除く全ての値のプロパティやメソッドを参照可能です。

なので配列にも質問文のような形で無理やりプロパティ参照して値をねじ込めますが、
正当な配列への値の保存ではありません。
配列が扱えるプロパティ(添字)は0からの連番となる数値だけです。

JavaScript

1const obj = {}; // 配列ではなくオブジェクトとして受ける 2obj['foo'] = 'bar'; 3 4console.log(obj); // {foo: "bar"} 5 6// オブジェクトにはlengthという概念がないのでundefinedになる 7console.log(obj.length); // undefined 8 9// 要素数が知りたければ、 10// Object.keysを使い登録されたキー(プロパティ名)の配列に変換してあげて、 11// そのlengthを参照すると良い 12console.log(Object.keys(obj)); // ["foo"] 13console.log(Object.keys(obj).length); // 1

投稿2019/04/03 07:14

miyabi-sun

総合スコア21158

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

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

miyabeam

2019/04/09 05:39

なるほど。オブジェクトにすればよかったんですね! ありがとうございます!
guest

0

// A・Bはいずれも文字列

const arr = [];
arr[取得した情報の種類A]=取得した情報の種類B;

Aが文字列ならarrは配列ではなくオブジェクトにしてください

javascript

1const arr = {}; 2

投稿2019/04/03 07:00

yambejp

総合スコア114583

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

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

miyabeam

2019/04/09 05:39

オブジェクトにしたらできました!ありがとうございます!
guest

0

const arr = [];

上記の場合ですと、
arrの型は、string配列になります。

string配列は、['apple', 'orange'] のように、
文字列が0番目、1番目の形式で保存されていきます。

miyabeam さんがやりたいのは、
以下のようなかたちで、値の受け渡しをされたいということでしょうか?

arr['foo'] = 'bbbb';
const hoge = arr['foo'];

質問の意図が合っていれば、
この場合は、fooという値は、0番目というものではなく、
fooという名のキーになります。

そのため、型としては、以下になり、

arr: { [key: string]: string } = {};

このようにすると、値の受け渡しができます。

this.arr.foo = 'aaa';
const hoge = this.arr.foo
console.debug(this.arr.foo, hoge);

投稿2019/04/03 07:50

nonoichi123

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問