回答編集履歴

21

テキスト修正

2018/07/28 00:52

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -200,7 +200,7 @@
200
200
 
201
201
 
202
202
 
203
- think49さんがご回答で、og24715さんがコメントでご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使ったコードを示します。`for ... of` を使ったときに、`index` の値の昇順に内容を列挙するようなMapオブジェクトを作成するには、以下のようにします。
203
+ think49さんがご回答で、og24715さんがコメントで、それぞれご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使ったコードを示します。`for ... of` を使ったときに、`index` の値の昇順に内容を列挙するようなMapオブジェクトを作成するには、以下のようにします。
204
204
 
205
205
 
206
206
 

20

テキスト修正

2018/07/28 00:52

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -200,9 +200,7 @@
200
200
 
201
201
 
202
202
 
203
- think49さんがご回答で、og24715さんがコメントでご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使ったコードを示します。
204
-
205
- `for ... of` を使ったときに、`index` の値の昇順に内容を列挙するようなMapオブジェクトを作成するには、以下のようにします。
203
+ think49さんがご回答で、og24715さんがコメントでご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使ったコードを示します。`for ... of` を使ったときに、`index` の値の昇順に内容を列挙するようなMapオブジェクトを作成するには、以下のようにします。
206
204
 
207
205
 
208
206
 

19

テキスト修正

2018/07/28 00:48

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -200,7 +200,7 @@
200
200
 
201
201
 
202
202
 
203
- 他の回答者様からご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使ったコードを示します。
203
+ think49さんがご回答で、og24715さんがコメントでご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使ったコードを示します。
204
204
 
205
205
  `for ... of` を使ったときに、`index` の値の昇順に内容を列挙するようなMapオブジェクトを作成するには、以下のようにします。
206
206
 

18

テキスト修正

2018/07/28 00:46

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -200,7 +200,9 @@
200
200
 
201
201
 
202
202
 
203
- 他の回答者様からご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使って、`for ... of` を使っときに、`index` の値の昇順に内容列挙できるようなMapオブジェクトを作成するには、以下のようにします。
203
+ 他の回答者様からご提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使ったコードします。
204
+
205
+ `for ... of` を使ったときに、`index` の値の昇順に内容を列挙するようなMapオブジェクトを作成するには、以下のようにします。
204
206
 
205
207
 
206
208
 

17

テキスト修正

2018/07/28 00:44

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -182,7 +182,7 @@
182
182
 
183
183
 
184
184
 
185
- 上記質問の回答の中、 [ECMAScript Third Edition (pdf)](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf) からの引用で、以下が書かれているものがあります。
185
+ 上記質問の回答の中で[一番得票の多い回答](https://stackoverflow.com/a/5525820) では、 [ECMAScript Third Edition (pdf)](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf) からの引用で、以下が書かれています。
186
186
 
187
187
 
188
188
 

16

テキスト修正

2018/07/28 00:24

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -200,7 +200,7 @@
200
200
 
201
201
 
202
202
 
203
- 他の回答者様から提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使って、`for ... of` を使ったときに、`index` の値の昇順に内容を列挙できるようなMapオブジェクトを作成するには、以下のようにします。
203
+ 他の回答者様から提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使って、`for ... of` を使ったときに、`index` の値の昇順に内容を列挙できるようなMapオブジェクトを作成するには、以下のようにします。
204
204
 
205
205
 
206
206
 
@@ -216,4 +216,4 @@
216
216
 
217
217
  ```
218
218
 
219
- 上記のサンプル: [https://jsfiddle.net/jun68ykt/jug198we/2/](https://jsfiddle.net/jun68ykt/jug198we/2/)
219
+ 上記のサンプル: [https://jsfiddle.net/jun68ykt/jug198we/3/](https://jsfiddle.net/jun68ykt/jug198we/3/)

15

テキスト修正

2018/07/28 00:18

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -191,3 +191,29 @@
191
191
  >
192
192
 
193
193
  > An object is a member of the type Object. **It is an unordered collection of properties** each of which contains a primitive value, object, or function. A function stored in a property of an object is called a method.
194
+
195
+
196
+
197
+ ---
198
+
199
+ **補足2**
200
+
201
+
202
+
203
+ 他の回答者様から提案されている [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使って、`for ... of` を使ったときに、`index` の値の昇順に内容を列挙できるようなMapオブジェクトを作成するには、以下のようにします。
204
+
205
+
206
+
207
+ ```javascript
208
+
209
+ const sortedEntriesByIndex = Object.entries(dataObj).sort(([key1, data1], [key2, data2]) => data1.index - data2.index);
210
+
211
+
212
+
213
+ const map = new Map(sortedEntriesByIndex);
214
+
215
+
216
+
217
+ ```
218
+
219
+ 上記のサンプル: [https://jsfiddle.net/jun68ykt/jug198we/2/](https://jsfiddle.net/jun68ykt/jug198we/2/)

14

テキスト修正

2018/07/28 00:17

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  - [Object.entries()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)
16
16
 
17
- - [Array.prototype.reduce()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
17
+ - [Array.prototype.map()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
18
18
 
19
19
 
20
20
 
@@ -82,19 +82,13 @@
82
82
 
83
83
 
84
84
 
85
- const sortedAry = Object.entries(dataObj)
85
+ const sortedAry =
86
86
 
87
- .reduce(
87
+ Object.entries(dataObj)
88
88
 
89
- (ary, [key, data]) => {
89
+ .map(([key, data]) => ({ key, ...data }))
90
90
 
91
- ary.push({ key, ...data });
92
-
93
- return(ary);
94
-
95
- }, [])
96
-
97
- .sort((e1, e2) => e1.index - e2.index );
91
+ .sort((e1, e2) => e1.index - e2.index );
98
92
 
99
93
 
100
94
 
@@ -102,7 +96,7 @@
102
96
 
103
97
  ```
104
98
 
105
- ※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/36/](https://jsfiddle.net/jun68ykt/g956j2fn/36/) にも上げました。
99
+ ※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/39/](https://jsfiddle.net/jun68ykt/g956j2fn/39/) にも上げました。
106
100
 
107
101
    
108
102
 

13

テキスト修正

2018/07/27 19:31

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- ソート後のデータ構造をどのように持つか用途によっていろいろ考えられそうです
5
+ ソート後のデータ構造をどのように持つ用途によっていろいろ考えられそうですが、一例としてこの回答では、元のJSONから以下のような形のオブジェクト
6
-
7
- 一例としてこの回答では、元のJSONから以下のような形のオブジェクト
8
6
 
9
7
  ```javascript
10
8
 
@@ -77,8 +75,6 @@
77
75
  }
78
76
 
79
77
  }`;
80
-
81
-
82
78
 
83
79
 
84
80
 
@@ -188,7 +184,7 @@
188
184
 
189
185
 
190
186
 
191
- [Does JavaScript Guarantee Object Property Order?](https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order) (stackoverflow)
187
+ - [Does JavaScript Guarantee Object Property Order?](https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order) (stackoverflow)
192
188
 
193
189
 
194
190
 

12

テキスト修正

2018/07/27 18:54

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -88,17 +88,17 @@
88
88
 
89
89
  const sortedAry = Object.entries(dataObj)
90
90
 
91
- .reduce(
91
+ .reduce(
92
-
92
+
93
- (ary, [key, data]) => {
93
+ (ary, [key, data]) => {
94
-
94
+
95
- ary.push( { key, ...data } );
95
+ ary.push({ key, ...data });
96
-
96
+
97
- return(ary);
97
+ return(ary);
98
-
98
+
99
- } , [])
99
+ }, [])
100
-
100
+
101
- .sort((e1, e2) => e1.index - e2.index );
101
+ .sort((e1, e2) => e1.index - e2.index );
102
102
 
103
103
 
104
104
 

11

テキスト修正

2018/07/27 18:48

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -80,6 +80,8 @@
80
80
 
81
81
 
82
82
 
83
+
84
+
83
85
  const dataObj = JSON.parse(jsonString);
84
86
 
85
87
 
@@ -100,17 +102,15 @@
100
102
 
101
103
 
102
104
 
103
- console.log(JSON.stringify(sortedAry));
105
+ console.log(JSON.stringify(sortedAry, null, "\t"));
104
-
105
-
106
106
 
107
107
  ```
108
108
 
109
- ※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/30/](https://jsfiddle.net/jun68ykt/g956j2fn/30/) にも上げました。
109
+ ※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/36/](https://jsfiddle.net/jun68ykt/g956j2fn/36/) にも上げました。
110
110
 
111
111
    
112
112
 
113
- これを実行すると、以下が出力されます。(改行とインデントを入れています)
113
+ これを実行すると、以下が出力されます。
114
114
 
115
115
 
116
116
 
@@ -118,55 +118,55 @@
118
118
 
119
119
  [
120
120
 
121
- {
121
+ {
122
-
122
+
123
- "key":"hoge",
123
+ "key": "hoge",
124
-
124
+
125
- "val":"val1",
125
+ "val": "val1",
126
-
126
+
127
- "index":1
127
+ "index": 1
128
-
128
+
129
- },
129
+ },
130
-
130
+
131
- {
131
+ {
132
-
132
+
133
- "key":"foo",
133
+ "key": "foo",
134
-
134
+
135
- "val":"val2",
135
+ "val": "val2",
136
-
136
+
137
- "index":2
137
+ "index": 2
138
-
138
+
139
- },
139
+ },
140
-
140
+
141
- {
141
+ {
142
-
142
+
143
- "key":"piyo",
143
+ "key": "piyo",
144
-
144
+
145
- "val":"val3",
145
+ "val": "val3",
146
-
146
+
147
- "index":3
147
+ "index": 3
148
-
148
+
149
- },
149
+ },
150
-
150
+
151
- {
151
+ {
152
-
152
+
153
- "key":"bar",
153
+ "key": "bar",
154
-
154
+
155
- "val":"val4",
155
+ "val": "val4",
156
-
156
+
157
- "index":4
157
+ "index": 4
158
-
158
+
159
- },
159
+ },
160
-
160
+
161
- {
161
+ {
162
-
162
+
163
- "key":"fuga",
163
+ "key": "fuga",
164
-
164
+
165
- "val":"val5",
165
+ "val": "val5",
166
-
166
+
167
- "index":5
167
+ "index": 5
168
-
168
+
169
- }
169
+ }
170
170
 
171
171
  ]
172
172
 

10

テキスト修正

2018/07/27 18:43

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -34,54 +34,52 @@
34
34
 
35
35
  ```javascript
36
36
 
37
- const jsonString = `{\
37
+ const jsonString = `{
38
-
38
+
39
- "hoge": {\
39
+ "hoge": {
40
-
40
+
41
- "val": "val1",\
41
+ "val": "val1",
42
-
42
+
43
- "index": 1\
43
+ "index": 1
44
-
44
+
45
- },\
45
+ },
46
-
46
+
47
- "piyo": {\
47
+ "piyo": {
48
-
48
+
49
- "val": "val3",\
49
+ "val": "val3",
50
-
50
+
51
- "index": 3\
51
+ "index": 3
52
-
52
+
53
- },\
53
+ },
54
-
54
+
55
- "fuga": {\
55
+ "fuga": {
56
-
56
+
57
- "val": "val5",\
57
+ "val": "val5",
58
-
58
+
59
- "index": 5\
59
+ "index": 5
60
-
60
+
61
- },\
61
+ },
62
-
62
+
63
- "foo": {\
63
+ "foo": {
64
-
64
+
65
- "val": "val2",\
65
+ "val": "val2",
66
-
66
+
67
- "index": 2\
67
+ "index": 2
68
-
68
+
69
- },\
69
+ },
70
-
70
+
71
- "bar": {\
71
+ "bar": {
72
-
72
+
73
- "val": "val4",\
73
+ "val": "val4",
74
-
74
+
75
- "index": 4\
75
+ "index": 4
76
-
76
+
77
- }\
77
+ }
78
78
 
79
79
  }`;
80
80
 
81
81
 
82
82
 
83
-
84
-
85
83
  const dataObj = JSON.parse(jsonString);
86
84
 
87
85
 
@@ -108,7 +106,7 @@
108
106
 
109
107
  ```
110
108
 
111
- ※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/28/](https://jsfiddle.net/jun68ykt/g956j2fn/28/) にも上げました。
109
+ ※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/30/](https://jsfiddle.net/jun68ykt/g956j2fn/30/) にも上げました。
112
110
 
113
111
    
114
112
 
@@ -194,7 +192,7 @@
194
192
 
195
193
 
196
194
 
197
- 上記の質問の回答の中に、 [ECMAScript Third Edition (pdf)](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf) からの引用で、以下が書かれているものがありますので、確認されるとよろしいかと思います
195
+ 上記の質問の回答の中に、 [ECMAScript Third Edition (pdf)](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf) からの引用で、以下が書かれているものがあります。
198
196
 
199
197
 
200
198
 

9

テキスト修正

2018/07/27 18:34

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ソート後のデータ構造をどのように持つか用途によっていろいろ考えられそうです。
6
6
 
7
- 一例としてこの回答では元のJSONから以下のような形のオブジェクト
7
+ 一例としてこの回答では元のJSONから以下のような形のオブジェクト
8
8
 
9
9
  ```javascript
10
10
 
@@ -12,9 +12,7 @@
12
12
 
13
13
  ```
14
14
 
15
- を要素とする配列を作って、これを `index` の値によってソートします。
16
-
17
- このような配列を作るために
15
+ を要素とする配列を、
18
16
 
19
17
  - [Object.entries()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)
20
18
 
@@ -22,7 +20,15 @@
22
20
 
23
21
 
24
22
 
23
+ によって作成し、これを `index` の値の昇順になるように、
24
+
25
+
26
+
27
+ - [Array.prototype.sort()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
28
+
29
+
30
+
25
- を使ます。
31
+ を使ってソートします。以下がそのコードです。
26
32
 
27
33
 
28
34
 

8

テキスト修正

2018/07/27 18:29

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,11 +2,27 @@
2
2
 
3
3
 
4
4
 
5
- ソート後のデータ構造をどのように持つか用途によっていろいろ考えられそうです。
5
+ ソート後のデータ構造をどのように持つか用途によっていろいろ考えられそうです。
6
6
 
7
-    
7
+ 一例として、この回答では元のJSONから、以下のような形のオブジェクト
8
8
 
9
- 以下のコードは、[Object.entries()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries) と、[Array.prototype.reduce()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)を使って、`"hoge"`, `"piyo"` ... を `key` というプロパティの値とし、 `{ val, index }` がマージされたオブジェクトの配列を得て、これをソートします。
9
+ ```javascript
10
+
11
+ { key: "hoge", val:"val1", index:1 }
12
+
13
+ ```
14
+
15
+ を要素とする配列を作って、これを `index` の値によってソートします。
16
+
17
+ このような配列を作るために、
18
+
19
+ - [Object.entries()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)
20
+
21
+ - [Array.prototype.reduce()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
22
+
23
+
24
+
25
+ を使います。
10
26
 
11
27
 
12
28
 

7

テキスト修正

2018/07/27 18:22

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- 用途により、ソート後のデータ構造をどのように持つか、いろいろ考えられそうですので、あくまで一例として、以下はいかがでしょう?
5
+ ソート後のデータ構造をどのように持つか、用途によっていろいろ考えられそうです
6
6
 
7
- (※下記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/20/](https://jsfiddle.net/jun68ykt/g956j2fn/20/) にも上げました。)
7
+    
8
+
9
+ 以下のコードは、[Object.entries()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries) と、[Array.prototype.reduce()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)を使って、`"hoge"`, `"piyo"` ... を `key` というプロパティの値とし、 `{ val, index }` がマージされたオブジェクトの配列を得て、これをソートします。
8
10
 
9
11
 
10
12
 
@@ -62,13 +64,13 @@
62
64
 
63
65
 
64
66
 
65
- const sortedAry = Object.keys(dataObj)
67
+ const sortedAry = Object.entries(dataObj)
66
68
 
67
69
  .reduce(
68
70
 
69
- (ary, key) => {
71
+ (ary, [key, data]) => {
70
72
 
71
- ary.push( { key, ...dataObj[key] } );
73
+ ary.push( { key, ...data } );
72
74
 
73
75
  return(ary);
74
76
 
@@ -84,9 +86,11 @@
84
86
 
85
87
  ```
86
88
 
89
+ ※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/28/](https://jsfiddle.net/jun68ykt/g956j2fn/28/) にも上げました。
87
90
 
91
+   
88
92
 
89
- 上記を実行すると、以下が出力されます。(改行とインデントを入れています)
93
+ これを実行すると、以下が出力されます。(改行とインデントを入れています)
90
94
 
91
95
 
92
96
 
@@ -156,81 +160,7 @@
156
160
 
157
161
  ---
158
162
 
159
- **追記1**
163
+ **補足**
160
-
161
-
162
-
163
- `hoge`, `piyo` ... をキーと呼ぶことにすると、キーを要素とする配列を作成して、
164
-
165
- これを、それぞれのキーに対応した `{ val ,index }` の `index` の値でソートした
166
-
167
- キーの配列を、以下で得ることができます。
168
-
169
-
170
-
171
- ```javascript
172
-
173
- const sortedKeys = Object.keys(dataObj)
174
-
175
- .sort((k1, k2) => dataObj[k1].index - dataObj[k2].index);
176
-
177
-
178
-
179
- // => ["hoge", "foo", "piyo", "bar", "fuga"]
180
-
181
- ```
182
-
183
-
184
-
185
- 上記のサンプル: [https://jsfiddle.net/jun68ykt/pkvme410/4/](https://jsfiddle.net/jun68ykt/pkvme410/4/)
186
-
187
-
188
-
189
- ---
190
-
191
- **追記2**
192
-
193
-
194
-
195
- 回答の冒頭に書いた `reduce` を使うコードで、`Object.entries` を使うと、以下のようにも書けます。
196
-
197
-
198
-
199
- ```javascript
200
-
201
- const jsonString = ・・・
202
-
203
-
204
-
205
- const dataObj = JSON.parse(jsonString);
206
-
207
-
208
-
209
- const sortedAry = Object.entries(dataObj)
210
-
211
- .reduce(
212
-
213
- (ary, [key, data]) => {
214
-
215
- ary.push( { key, ...data } );
216
-
217
- return(ary);
218
-
219
- } , [])
220
-
221
- .sort((e1, e2) => e1.index - e2.index );
222
-
223
- ```
224
-
225
-
226
-
227
- 上記のサンプル: [https://jsfiddle.net/jun68ykt/g956j2fn/27/](https://jsfiddle.net/jun68ykt/g956j2fn/27/)
228
-
229
-
230
-
231
- ---
232
-
233
- **追記3**
234
164
 
235
165
 
236
166
 

6

テキスト追加

2018/07/27 18:13

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -222,4 +222,32 @@
222
222
 
223
223
  ```
224
224
 
225
+
226
+
225
227
  上記のサンプル: [https://jsfiddle.net/jun68ykt/g956j2fn/27/](https://jsfiddle.net/jun68ykt/g956j2fn/27/)
228
+
229
+
230
+
231
+ ---
232
+
233
+ **追記3**
234
+
235
+
236
+
237
+ プレーンオブジェクトのプロパティに順序がないことについては、以下の投稿で確認されるとよいかと思います。
238
+
239
+
240
+
241
+ [Does JavaScript Guarantee Object Property Order?](https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order) (stackoverflow)
242
+
243
+
244
+
245
+ 上記の質問の回答の中に、 [ECMAScript Third Edition (pdf)](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf) からの引用で、以下が書かれているものがありますので、確認されるとよろしいかと思います。
246
+
247
+
248
+
249
+ > 4.3.3 Object
250
+
251
+ >
252
+
253
+ > An object is a member of the type Object. **It is an unordered collection of properties** each of which contains a primitive value, object, or function. A function stored in a property of an object is called a method.

5

テキスト追加

2018/07/27 04:20

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- どのよう使うのかにって、ソート後のデータ構造をどのように持つか、いろいろ考えられそうですので、あくまで一例として、以下はいかがでしょう?
5
+ 用途によ、ソート後のデータ構造をどのように持つか、いろいろ考えられそうですので、あくまで一例として、以下はいかがでしょう?
6
6
 
7
7
  (※下記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/20/](https://jsfiddle.net/jun68ykt/g956j2fn/20/) にも上げました。)
8
8
 

4

テキスト追加

2018/07/27 04:09

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -198,6 +198,10 @@
198
198
 
199
199
  ```javascript
200
200
 
201
+ const jsonString = ・・・
202
+
203
+
204
+
201
205
  const dataObj = JSON.parse(jsonString);
202
206
 
203
207
 

3

テキスト追加

2018/07/27 04:00

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -156,7 +156,7 @@
156
156
 
157
157
  ---
158
158
 
159
- **追記**
159
+ **追記1**
160
160
 
161
161
 
162
162
 
@@ -183,3 +183,39 @@
183
183
 
184
184
 
185
185
  上記のサンプル: [https://jsfiddle.net/jun68ykt/pkvme410/4/](https://jsfiddle.net/jun68ykt/pkvme410/4/)
186
+
187
+
188
+
189
+ ---
190
+
191
+ **追記2**
192
+
193
+
194
+
195
+ 回答の冒頭に書いた `reduce` を使うコードで、`Object.entries` を使うと、以下のようにも書けます。
196
+
197
+
198
+
199
+ ```javascript
200
+
201
+ const dataObj = JSON.parse(jsonString);
202
+
203
+
204
+
205
+ const sortedAry = Object.entries(dataObj)
206
+
207
+ .reduce(
208
+
209
+ (ary, [key, data]) => {
210
+
211
+ ary.push( { key, ...data } );
212
+
213
+ return(ary);
214
+
215
+ } , [])
216
+
217
+ .sort((e1, e2) => e1.index - e2.index );
218
+
219
+ ```
220
+
221
+ 上記のサンプル: [https://jsfiddle.net/jun68ykt/g956j2fn/27/](https://jsfiddle.net/jun68ykt/g956j2fn/27/)

2

テキスト追加

2018/07/27 03:59

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -164,7 +164,7 @@
164
164
 
165
165
  これを、それぞれのキーに対応した `{ val ,index }` の `index` の値でソートした
166
166
 
167
- 配列を得るには、以下でOKです。
167
+ キーの配列を、以下で得ることがきます。
168
168
 
169
169
 
170
170
 

1

テキスト追加

2018/07/27 02:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -151,3 +151,35 @@
151
151
 
152
152
 
153
153
  以上参考になれば幸いです。
154
+
155
+
156
+
157
+ ---
158
+
159
+ **追記**
160
+
161
+
162
+
163
+ `hoge`, `piyo` ... をキーと呼ぶことにすると、キーを要素とする配列を作成して、
164
+
165
+ これを、それぞれのキーに対応した `{ val ,index }` の `index` の値でソートした
166
+
167
+ 配列を得るには、以下でOKです。
168
+
169
+
170
+
171
+ ```javascript
172
+
173
+ const sortedKeys = Object.keys(dataObj)
174
+
175
+ .sort((k1, k2) => dataObj[k1].index - dataObj[k2].index);
176
+
177
+
178
+
179
+ // => ["hoge", "foo", "piyo", "bar", "fuga"]
180
+
181
+ ```
182
+
183
+
184
+
185
+ 上記のサンプル: [https://jsfiddle.net/jun68ykt/pkvme410/4/](https://jsfiddle.net/jun68ykt/pkvme410/4/)