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

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

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

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

Q&A

解決済

3回答

321閲覧

js 連想配列を[]で入れるのと{}入れる違い

L85A2

総合スコア60

JavaScript

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

0グッド

0クリップ

投稿2018/11/02 08:39

編集2018/11/02 08:40

js

1 test = []; 2 test.hoge = 0; 3 test.hogee = 1; 4 5 test2 = {}; 6 test2.huga = 2; 7 test2.hugaa = 3; 8 9 console.dir(test); 10  //Array(0) 11 //hoge: 0 12 //hogee: 1 13 //length: 0 14 15 console.dir(test2); 16 //Object 17 //huga: 2 18 //hugaa: 3

{}と[]の違いはなんでしょうか?
普段は何も考えず{}で囲んで連想配列を使っているのですが、他人のソースコードを呼んでると[]で囲んでいる人がいるので疑問に思いました。

メリットデメリットがあれば教えてください

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

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

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

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

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

guest

回答3

0

[]は配列です。console.logした結果で分かるように、test.hogeは配列の要素ではないので、そのような使いかたはやめたほうがいいです。
(lengthが0になっていますよね)

「連想配列」というものはないので、objectかMapを使いましょう


質問者様以外の「javascriptで[]と{}の違い」を求めてこられた方へ

  • mts10806さんの回答のとおり、型の違いです。
  • javascriptに連想配列はありません。それは配列ではありません。

下記のような動作になりますので、気をつけてください

javascript

1var test = [3]; 2 test.hoge = 0; 3 test.hogee = 1; 4test.forEach(function(e){console.log(e);}); //3だけが出力される

投稿2018/11/02 09:01

編集2018/11/02 09:23
papinianus

総合スコア12705

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

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

guest

0

{}と[]の違いはなんでしょうか?

console.log()の結果に明確に出てますよ。
[]

//Array(0)

{}

//Object

冒頭は変数の型です。

メリットデメリットを語るのであれば、そのままArrayとObjectのメリットデメリットになります。
そのあたりは「array object 違い」などで検索して理解を深めてください。

投稿2018/11/02 08:52

m.ts10806

総合スコア80850

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

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

0

ベストアンサー

既出ですが
型の違いになりますね。

ご参考までに
オブジェクト型にするメリットの記事がありました。
https://teratail.com/questions/49589

個人的には基本はArray型([]のほう)を使用して
特別なメソッドをもたせたいなどの場合のみObeject型({}のほう)
を使ってます。

オブジェクト指向でプログラミングするのにObeject型を使うのが
きれいで好きなんですが
phpのフレームワークは手続き型になっている場合が多いので
実際はほぼArray型しかつかっていません。。。

投稿2018/11/02 09:05

miyasaka

総合スコア271

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

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

L85A2

2018/11/02 09:11

あーなるほど web系を最近学び始めたばかりだったのでのでhtmlとcssとjs周りだけしかまだ勉強していませんでした。 ナイスアンサーです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問