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

回答編集履歴

1

まいすまくんさんの助言を元に調査し反映

2018/08/17 04:24

投稿

miyabi-sun
miyabi-sun

スコア21454

answer CHANGED
@@ -14,17 +14,21 @@
14
14
  1: ["1", 0, 0, 9999, 0],
15
15
  aaa: ["aaa", 0, 0, 0, 0]
16
16
  }
17
+ console.log(Object.keys(array))
18
+ // ["1", "2", "ccc", "あああ", "aaa"] <- 生成した瞬間に整数文字列の1と2は常に先に来るらしい
19
+
17
20
  var sortedKeys = Object.keys(array).sort()
21
+ console.log(sortedKeys)
18
- console.log(sortedKeys) // ["1", "2", "aaa", "ccc", "あああ"]
22
+ // ["1", "2", "aaa", "ccc", "あああ"] <- キーの配列に変換してからソート
19
23
 
20
24
  var newArray = {}
21
25
  for (var key of sortedKeys) {
22
26
  newArray[key] = array[key]
23
27
  }
28
+ console.log(Object.keys(newArray))
24
- console.log(newArray) // {1: Array(5), 2: Array(5), aaa: Array(5), ccc: Array(5), あああ: Array(5)}
29
+ // ["1", "2", "aaa", "ccc", "あああ"] <- 1と2は制御出来ないが「あああ」は最後尾に移動した
25
- // 1: (5) ["1", 0, 0, 9999, 0]
26
- // 2: (5) ["2", 0, 0, 0, 0]
27
- // aaa: (5) ["aaa", 0, 0, 0, 0]
28
- // ccc: (5) ["ccc", 9999, 0, 0, 0]
29
- // あああ: (5) ["あああ", 0, 0, 0, 9999]
30
- ```
30
+ ```
31
+
32
+ 【追記】 maisumakunさんの助言: オブジェクトの整数文字列のキーは制御できません
33
+ 確かに制御出来ませんでした。
34
+ 他のキーは一応意図通りに順序を変更出来ましたので編集して載せておきます。