teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

テキスト修正

2018/02/12 10:07

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -35,7 +35,7 @@
35
35
  上記で、 **unordered** とあるので、`for(var i in json)` で json のプロパティが
36
36
  何らかの望ましい順序で取り出せると期待しないほうがよい、とはいえるでしょう。
37
37
 
38
- 他の回答を読むと、ES6仕様および実装によっては、何らかの順序があるようですが、
38
+ 他の回答を読むと、今現在主要なjavaScript実装によっては、何らかの順序があるようですが、
39
39
  今のところは、以下の回答に従うのがよさそうです。
40
40
 
41
41
  > ftor answered Jul 6 '16 at 7:38

4

テキスト修正

2018/02/12 10:07

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -48,8 +48,8 @@
48
48
  **補足2**
49
49
 
50
50
  `for..in`で、オブジェクトのプロパティを何らかの順序で取り出せることを期待するのは拙い、
51
- ということを、上記で回答しましたが、それはそれとして、`json[1]` で要素が取れるので
51
+ ということを、上記で回答しましたが、それはそれとして、`json[1]` で要素が取れる、つまり、
52
- あれば、以下のような修正をすると、意図通り動くかもしれません。
52
+ jsonのプロパティが整数なのであれば、以下のような修正をすると、意図通り動くかもしれません。
53
53
 
54
54
  修正前
55
55
  ```javascript
@@ -74,4 +74,7 @@
74
74
  });
75
75
  });
76
76
 
77
- ```
77
+ ```
78
+
79
+ ただし、 json のプロパティが 0,1,2,3 ・・・ のように 0 始まりで、かつ抜けている数字が
80
+ ないことが前提になります。

3

回答追加

2018/02/12 09:35

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -21,7 +21,7 @@
21
21
  以上参考になれば幸いです。
22
22
 
23
23
  ---
24
- 補足
24
+ **補足1**
25
25
 
26
26
  stackoverflow の以下の質問
27
27
  [https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order](https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order)
@@ -42,4 +42,36 @@
42
42
   
43
43
  > **Property order in normal Objects is a complex subject in Javascript.**
44
44
  ** ・・・ **
45
- ** Conclusion: Even in ES2015 you shouldn't rely on the property order of normal objects in Javascript. It is prone to errors. Use Map instead. **
45
+ ** Conclusion: Even in ES2015 you shouldn't rely on the property order of normal objects in Javascript. It is prone to errors. Use Map instead. **
46
+
47
+ ---
48
+ **補足2**
49
+
50
+ `for..in`で、オブジェクトのプロパティを何らかの順序で取り出せることを期待するのは拙い、
51
+ ということを、上記で回答しましたが、それはそれとして、`json[1]` で要素が取れるので
52
+ あれば、以下のような修正をすると、意図通り動くかもしれません。
53
+
54
+ 修正前
55
+ ```javascript
56
+ //モーダル内の画像クリック時の処理
57
+ for(var i in json){
58
+ $("#samplegazo").on('click','.test',function(){
59
+ //ここにクリックした画像のデータ(codeとname)を取得する処理を書きたいです。
60
+ $(':hidden[name="hiddenCode"]').val(json[i].code);
61
+ $('#nameselect').val(json[i].name);
62
+ });
63
+ }
64
+ ```
65
+
66
+ 修正後
67
+ ```javascript
68
+
69
+ $("#samplegazo .test").each(function(index, li) {
70
+ $(li).on('click', function() {
71
+ //ここにクリックした画像のデータ(codeとname)を取得する処理を書きたいです。
72
+ $(':hidden[name="hiddenCode"]').val(json[index].code);
73
+ $('#nameselect').val(json[index].name);
74
+ });
75
+ });
76
+
77
+ ```

2

テキスト修正

2018/02/12 09:18

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -33,4 +33,13 @@
33
33
  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.
34
34
 
35
35
  上記で、 **unordered** とあるので、`for(var i in json)` で json のプロパティが
36
- 何らかの望ましい順序で取り出せると期待することはできない、といえるでしょう。
36
+ 何らかの望ましい順序で取り出せると期待ないほうがよい、といえるでしょう。
37
+
38
+ 他の回答を読むと、ES6の仕様および実装によっては、何らかの順序があるようですが、
39
+ 今のところは、以下の回答に従うのがよさそうです。
40
+
41
+ > ftor answered Jul 6 '16 at 7:38
42
+  
43
+ > **Property order in normal Objects is a complex subject in Javascript.**
44
+ ** ・・・ **
45
+ ** Conclusion: Even in ES2015 you shouldn't rely on the property order of normal objects in Javascript. It is prone to errors. Use Map instead. **

1

テキスト修正

2018/02/12 08:50

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -18,4 +18,19 @@
18
18
  `json` を配列として取得するようにAPIを見直すか、 API から JSONを
19
19
  取得した後に配列にし直すという処理を入れたほうがよいかもしれません。
20
20
 
21
- 以上参考になれば幸いです。
21
+ 以上参考になれば幸いです。
22
+
23
+ ---
24
+ 補足
25
+
26
+ stackoverflow の以下の質問
27
+ [https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order](https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order)
28
+
29
+ の回答で多数の Like がついているものに、ECMAScriptの仕様が以下のように引用されています。
30
+
31
+ > 4.3.3 Object
32
+ >
33
+ 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.
34
+
35
+ 上記で、 **unordered** とあるので、`for(var i in json)` で json のプロパティが
36
+ 何らかの望ましい順序で取り出せると期待することはできない、といえるでしょう。