回答編集履歴

7

修正

2019/08/22 01:11

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -176,7 +176,13 @@
176
176
 
177
177
 
178
178
 
179
+ もはや「配列」って便宜上そう呼んでいるだけで
180
+
181
+ そもそも[オブジェクトって「モノ」そのもの](https://wa3.i-3-i.info/word1119.html)なので
182
+
179
- もはや「配列」って便宜上そう呼んでいるだけでプログラミング言語上は正しくは「全てオブジェクト」ということなのかなと思いました
183
+ プログラミング言語上は正しくは「全てオブジェクト」ということなのかなと思いました
184
+
185
+ (あくまで今回検証した範囲で。私自身も知らない言語の方が多いので言語毎に概念や表現をドキュメントで確認する必要はあります)。
180
186
 
181
187
 
182
188
 

6

修正

2019/08/22 01:11

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  オブジェクトなので、いわゆる連想配列の特徴である「添え字」とは呼びません。
52
52
 
53
- [プロパティ](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new#Description)です。
53
+ [プロパティ](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors)です。
54
54
 
55
55
  (いうなれば属性名と属性値のペアの集まりです)
56
56
 

5

修正

2019/08/22 00:39

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- 様々なオブジェクト指向で出てくる[new](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new)ですね。
45
+ 様々なオブジェクト指向言語で出てくる[new](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new)ですね。
46
46
 
47
47
  newはご存知かもしれませんが、オブジェクトをインスタンス化する演算子です。
48
48
 

4

修正

2019/08/22 00:37

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -6,16 +6,178 @@
6
6
 
7
7
  ](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer)
8
8
 
9
-
10
-
11
- [javascript オブジェクト 連想配列 違い]で調べれば幾らでも解説記事がでてきます。
12
-
13
- それで調べて納得できないならその記事を例に挙げて質問してください。
14
-
15
- コードだけポンと置かれた場合、他者は自分で書いたコード」と認識します。
9
+ 構文ころを参照
16
10
 
17
11
 
18
12
 
19
- 低評価理由コメン願います。
13
+ もっと言えば「配列」もオブジェクす。
20
14
 
15
+ > [Array](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)
16
+
17
+ JavaScript の Array オブジェクトは、配列を構築するためのグローバルオブジェクトで、配列とは複数の要素の集合を格納管理するリスト構造です。
18
+
19
+
20
+
21
+ 初期化は確かにこのように書かれることが多いです。
22
+
23
+ ```js
24
+
25
+ let obj = {};
26
+
27
+ let arr = [];
28
+
29
+ ```
30
+
31
+ ただこれはあくまで[リテラル](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB)であり、丁寧に書くとこうなります。
32
+
33
+
34
+
35
+ ```js
36
+
37
+ let obj = new Object();
38
+
39
+ let arr = new Array();
40
+
41
+ ```
42
+
43
+
44
+
45
+ 様々なオブジェクト指向で出てくる[new](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new)ですね。
46
+
47
+ newはご存知かもしれませんが、オブジェクトをインスタンス化する演算子です。
48
+
49
+
50
+
51
+ オブジェクトなので、いわゆる連想配列の特徴である「添え字」とは呼びません。
52
+
53
+ [プロパティ](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new#Description)です。
54
+
55
+ (いうなれば属性名と属性値のペアの集まりです)
56
+
57
+
58
+
59
+ ```js
60
+
61
+ let obj = {};
62
+
63
+ obj.hoge = "a";//プロパティ
64
+
65
+ ```
66
+
67
+
68
+
69
+ ただ、リテラルとしても記述が可能であるため、連想配列”のような”アクセスの仕方が可能となっているだけです。
70
+
71
+ ```js
72
+
73
+ let obj = {};
74
+
75
+ obj.hoge = "a";
76
+
77
+ console.log(obj); //{ hoge: 'a' }
78
+
79
+ console.log(obj.hoge); //a
80
+
81
+ console.log(obj["hoge"]); //a
82
+
83
+ ```
84
+
85
+
86
+
21
- きちんと技術的に指摘いただけたら助かります。
87
+ オブジェクトなので、メソッドも持てます。
88
+
89
+ ```js
90
+
91
+ let obj = {};
92
+
93
+ obj.fnc = function(a){
94
+
95
+ console.log(a); //b
96
+
97
+ }
98
+
99
+ obj.fnc("b");
100
+
101
+ ```
102
+
103
+
104
+
105
+ ちなみに`{}`のところを`[]`にして確認してみても結果としては”ほぼ”同じです。
106
+
107
+ ObjectかArrayかの違いだけですね。
108
+
109
+ ```js
110
+
111
+ let arr = [];
112
+
113
+ arr.hoge = "a";
114
+
115
+ console.log(arr); //[ hoge: 'a' ]
116
+
117
+ console.log(arr.hoge); //a
118
+
119
+ console.log(arr["hoge"]); //a
120
+
121
+ arr.fnc = function(a){
122
+
123
+ console.log(a); //b
124
+
125
+ }
126
+
127
+ arr.fnc("b");
128
+
129
+ ```
130
+
131
+
132
+
133
+ 私自身もObjectとArrayの完全な使い分けができるほど使い込んでいるわけではありません。
134
+
135
+ どこかで拾ってきたような言葉を借りるようになりますが、私もおおよそ下記のように考えています
136
+
137
+
138
+
139
+ - 数値だけが順番にならんでいるようなデータならArrayが適切
140
+
141
+ - データをまとめて扱うならObjectが適切
142
+
143
+ - 表のように複数のレコードを扱うならArray+Object
144
+
145
+
146
+
147
+ ------
148
+
149
+
150
+
151
+ 蛇足:
152
+
153
+ ちなみに今回色々試していく中で「あ、こんなこともできたのか」と知ったことがあるのでついでに書いておきます。
154
+
155
+ ```PHP
156
+
157
+ <?php
158
+
159
+ $arr = [];
160
+
161
+ $arr[] = function($a){
162
+
163
+ echo $a;
164
+
165
+ };
166
+
167
+ $arr[] = "v";
168
+
169
+ var_dump($arr);
170
+
171
+
172
+
173
+ $arr[0]("b");
174
+
175
+ ```
176
+
177
+
178
+
179
+ もはや「配列」って便宜上そう呼んでいるだけでプログラミング言語上は正しくは「全てオブジェクト」ということなのかなと思いました。
180
+
181
+
182
+
183
+ [C言語](https://github.com/php/php-src/blob/master/ext/standard/array.c)もちゃんと勉強しようかなと思った今日この頃です。

3

低評価されたかたはきちんとご指摘ください。改善いたします

2019/08/22 00:37

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -13,3 +13,9 @@
13
13
  それで調べて納得できないならその記事を例に挙げて質問してください。
14
14
 
15
15
  コードだけポンと置かれた場合、他者は「自分で書いたコード」と認識します。
16
+
17
+
18
+
19
+ 低評価理由コメント願います。
20
+
21
+ きちんと技術的に指摘いただけたら助かります。

2

修正

2019/08/21 11:44

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -1,10 +1,10 @@
1
- JavaScriptにそもそも「連想配列」という概念はありません。
1
+ JavaScriptにある`{}`は**オブジェクト**でそもそも「連想配列」という概念はありません。
2
-
3
- 他の言語で言う「連想配列」を「オブジェクト」と呼んでいます。
4
-
5
-
6
2
 
7
3
  オブジェクトが「他の言語で言う連想配列のように使える」だけです。
4
+
5
+ - [オブジェクト初期化子
6
+
7
+ ](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer)
8
8
 
9
9
 
10
10
 

1

低評価理由をコメント願います。

2019/08/21 01:12

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -4,4 +4,12 @@
4
4
 
5
5
 
6
6
 
7
+ オブジェクトが「他の言語で言う連想配列のように使える」だけです。
8
+
9
+
10
+
7
11
  [javascript オブジェクト 連想配列 違い]で調べれば幾らでも解説記事がでてきます。
12
+
13
+ それで調べて納得できないならその記事を例に挙げて質問してください。
14
+
15
+ コードだけポンと置かれた場合、他者は「自分で書いたコード」と認識します。