回答編集履歴
21
テキスト修正
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
テキスト修正
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
テキスト修正
test
CHANGED
@@ -200,7 +200,7 @@
|
|
200
200
|
|
201
201
|
|
202
202
|
|
203
|
-
|
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
テキスト修正
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) を使っ
|
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
テキスト修正
test
CHANGED
@@ -182,7 +182,7 @@
|
|
182
182
|
|
183
183
|
|
184
184
|
|
185
|
-
上記
|
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
テキスト修正
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/
|
219
|
+
上記のサンプル: [https://jsfiddle.net/jun68ykt/jug198we/3/](https://jsfiddle.net/jun68ykt/jug198we/3/)
|
15
テキスト修正
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
テキスト修正
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.
|
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 =
|
85
|
+
const sortedAry =
|
86
86
|
|
87
|
-
.red
|
87
|
+
Object.entries(dataObj)
|
88
88
|
|
89
|
-
(
|
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/3
|
99
|
+
※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/39/](https://jsfiddle.net/jun68ykt/g956j2fn/39/) にも上げました。
|
106
100
|
|
107
101
|
|
108
102
|
|
13
テキスト修正
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
テキスト修正
test
CHANGED
@@ -88,17 +88,17 @@
|
|
88
88
|
|
89
89
|
const sortedAry = Object.entries(dataObj)
|
90
90
|
|
91
|
-
|
91
|
+
.reduce(
|
92
|
-
|
92
|
+
|
93
|
-
|
93
|
+
(ary, [key, data]) => {
|
94
|
-
|
94
|
+
|
95
|
-
|
95
|
+
ary.push({ key, ...data });
|
96
|
-
|
96
|
+
|
97
|
-
|
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
テキスト修正
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
|
-
|
105
|
+
console.log(JSON.stringify(sortedAry, null, "\t"));
|
104
|
-
|
105
|
-
|
106
106
|
|
107
107
|
```
|
108
108
|
|
109
|
-
※上記のコードと同じものを、[https://jsfiddle.net/jun68ykt/g956j2fn/3
|
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
|
-
|
123
|
+
"key": "hoge",
|
124
|
-
|
124
|
+
|
125
|
-
|
125
|
+
"val": "val1",
|
126
|
-
|
126
|
+
|
127
|
-
|
127
|
+
"index": 1
|
128
|
-
|
128
|
+
|
129
|
-
|
129
|
+
},
|
130
|
-
|
130
|
+
|
131
|
-
|
131
|
+
{
|
132
|
-
|
132
|
+
|
133
|
-
|
133
|
+
"key": "foo",
|
134
|
-
|
134
|
+
|
135
|
-
|
135
|
+
"val": "val2",
|
136
|
-
|
136
|
+
|
137
|
-
|
137
|
+
"index": 2
|
138
|
-
|
138
|
+
|
139
|
-
|
139
|
+
},
|
140
|
-
|
140
|
+
|
141
|
-
|
141
|
+
{
|
142
|
-
|
142
|
+
|
143
|
-
|
143
|
+
"key": "piyo",
|
144
|
-
|
144
|
+
|
145
|
-
|
145
|
+
"val": "val3",
|
146
|
-
|
146
|
+
|
147
|
-
|
147
|
+
"index": 3
|
148
|
-
|
148
|
+
|
149
|
-
|
149
|
+
},
|
150
|
-
|
150
|
+
|
151
|
-
|
151
|
+
{
|
152
|
-
|
152
|
+
|
153
|
-
|
153
|
+
"key": "bar",
|
154
|
-
|
154
|
+
|
155
|
-
|
155
|
+
"val": "val4",
|
156
|
-
|
156
|
+
|
157
|
-
|
157
|
+
"index": 4
|
158
|
-
|
158
|
+
|
159
|
-
|
159
|
+
},
|
160
|
-
|
160
|
+
|
161
|
-
|
161
|
+
{
|
162
|
-
|
162
|
+
|
163
|
-
|
163
|
+
"key": "fuga",
|
164
|
-
|
164
|
+
|
165
|
-
|
165
|
+
"val": "val5",
|
166
|
-
|
166
|
+
|
167
|
-
|
167
|
+
"index": 5
|
168
|
-
|
168
|
+
|
169
|
-
|
169
|
+
}
|
170
170
|
|
171
171
|
]
|
172
172
|
|
10
テキスト修正
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/
|
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
テキスト修正
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
ソート後のデータ構造をどのように持つか用途によっていろいろ考えられそうです。
|
6
6
|
|
7
|
-
一例として
|
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
テキスト修正
test
CHANGED
@@ -2,11 +2,27 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
ソート後のデータ構造をどのように持つか
|
5
|
+
ソート後のデータ構造をどのように持つか用途によっていろいろ考えられそうです。
|
6
6
|
|
7
|
-
|
7
|
+
一例として、この回答では元のJSONから、以下のような形のオブジェクト
|
8
8
|
|
9
|
-
|
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
テキスト修正
test
CHANGED
@@ -2,9 +2,11 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
ソート後のデータ構造をどのように持つか、用途によっていろいろ考えられそうです。
|
6
6
|
|
7
|
-
|
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.
|
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, ...data
|
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
|
-
**
|
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
テキスト追加
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
テキスト追加
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
テキスト追加
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
テキスト追加
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
テキスト追加
test
CHANGED
@@ -164,7 +164,7 @@
|
|
164
164
|
|
165
165
|
これを、それぞれのキーに対応した `{ val ,index }` の `index` の値でソートした
|
166
166
|
|
167
|
-
配列を
|
167
|
+
キーの配列を、以下で得ることができます。
|
168
168
|
|
169
169
|
|
170
170
|
|
1
テキスト追加
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/)
|