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

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

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

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

Q&A

3回答

462閲覧

オブジェクト 連想配列 違い

abcd1584

総合スコア0

JavaScript

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

0グッド

1クリップ

投稿2021/12/01 06:17

編集2021/12/01 06:51

javaについて質問します。
オブジェクトと連想配列の違いについて教えてください
それぞれの意味はなんとなくわかりますが、違いがよくわかりません

理解した部分
オブジェクト=データの塊、書き方は{name:’apple’,price:100}
連想配列=これもでーたの塊、書き方はオブジェクトと同じ

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

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

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

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

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

maisumakun

2021/12/01 06:21

では、まず「なんとなく理解している内容」を示していただけないでしょうか?
abcd1584

2021/12/01 06:31

すいません。追加しました
int32_t

2021/12/01 06:34

JavaではなくJavaScriptの話でしょうか?
m.ts10806

2021/12/01 06:36 編集

回答してしまった。書き方からするとJavascriptぽいですね。あまり大きくは回答内容変わらないけど
abcd1584

2021/12/01 06:41

すいません。同じだと思い質問してしまいました。 JavaScript です。。
m.ts10806

2021/12/01 06:42

質問タグ修正してください。回答もあわせて修正します。
guest

回答3

0

私見ですが、「連想配列」は俗語だと思います。

JavaScriptは、オブジェクトリテラル(オブジェクト初期化子を使って書かれたオブジェクト)を、俗に「連想配列」と呼んでいた時期があったと思います。
たとえば、new Image()などで得られるオブジェクトについても、プロパティを使ってキーバリューを保存できるため「連想配列」と呼んで差し支えない機能がありますが、あまりこれを「連想配列」とは呼びません。

投稿2021/12/01 08:18

編集2021/12/01 08:20
Lhankor_Mhy

総合スコア36960

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

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

0

にあるように、「オブジェクトは連想配列と呼ばれることがあります」ということですね。
ただしjsのオブジェクトはイテラブルではないので配列と呼ぶにはちょっと違和感があります。

なお、プリミティブな要素はそれぞれの型を参照できますが

javascript

1const bool=true; 2const num=123; 3const bint=123n; 4const str="xyz"; 5const unde=undefined; 6const func=()=>{}; 7console.log([typeof bool,typeof num,typeof bint,typeof str,typeof unde,typeof func]);

(ただしnullはオブジェクト)
オブジェクトやリスト系のもの配列などは型はobjectです
(数値や文字列もオブジェクト型で宣言すればobject)

javascript

1const o={}; 2const s=new Set(); 3const m=new Map(); 4const a=[]; 5const n=new Number(); 6const st=new String(); 7console.log([typeof o,typeof s,typeof m,typeof a,typeof n,typeof st]);

ただし、厳密に型を比較することも可能です

javascript

1const o={}; 2console.log([o instanceof Object,o instanceof Array]); 3const a=[]; 4console.log([a instanceof Object,a instanceof Array]);

投稿2021/12/01 06:59

編集2021/12/01 07:18
yambejp

総合スコア116724

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

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

abcd1584

2021/12/01 13:39

返信遅れてすいません。また、回答ありがとうございます。 typeofを書いて型を見ると、objectの場合objectが、配列等の場合それにあったtypeが表示されるということでしょうか。
guest

0

「オブジェクト」はJavaScriptで扱うすべてのもの。データ型それぞれオブジェクトの1つ。

「連想配列」はどちらか言うと俗称ではなかろうかと。

key-value形式のものを言っているのでしたら「連想配列風オブジェクト」ですし(MapとかJSONとか)、
リスト形式のものなら例えば「リスト形式オブジェクト」と言えます。

過去質問にもあったかと思います。

投稿2021/12/01 06:35

編集2021/12/01 06:50
m.ts10806

総合スコア80875

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

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

abcd1584

2021/12/01 06:39

回答ありがとうございます。 オブジェクトの中に連想配列があると言うことでしょうか
m.ts10806

2021/12/01 06:40

その理解に至ったのはどういう思考経路でしょうか(間違ってるかどうかではなく、回答をどう読み解いたのか気にしています)
m.ts10806

2021/12/01 06:51

回答修正していますが過去質問にもあったはずで、そのときの回答見られたほうが良いと思います。
abcd1584

2021/12/01 06:55

オブジェクト」はJavaScriptで扱うすべてのもの。と仰っていましたので、その中に配列類も入るのではないかなと思いました。 俗称がよくわからなかったので。。 また、確かにありましたが、それは配列とオブジェクトの比較であって、連想配列とオブジェクトの比較ではなかったため、質問させて頂きました
m.ts10806

2021/12/01 07:13 編集

「連想配列」と表現するからおかしくなるのかと思います。 そもそも連想配列も配列の1つの形ですしね(ここは解釈が難しい)。 いずれにしてもカテゴリの違うものを比較しようとしているということが分かればと。
abcd1584

2021/12/01 08:17

なるほど、連想配列もオブジェクトも格納できる値は一緒で、そこは違いはないのですが、連想配列は配列の一種っていうところがオブジェクトとの違いということでしょうか。
m.ts10806

2021/12/01 11:32

カテゴリの違うものなので「違い」を比較するのはほとんど無意味です。 PHPとRubyとJavaを比べるのはカテゴリが同じなので成り立ちますが、「プログラミング言語」と「PHP」は比べようがないです。 あと注意なのは「オブジェクト」とひとえに言っても「Objectという型」なのか「オブジェクトそのもの(概念に近い)」なのかでも違うと思います。文脈によって変わります。
m.ts10806

2021/12/01 11:33

yambejpさんは「Object」について言及されています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問