前提
htmlでテーブルを作り、ボタンにより表のソートを行おうとしています。
テストで単純なオブジェクトを作り並べ替えのjavascriptを作成し
codepenで検証しました。
実現したいこと
javascript
1const obj={"100":1,"200":2,"010":3} 2//これを変換し、 3objConv={"010":3,"100":1,"200":2} 4//というオブジェクトにしたいと思っています。 5
発生している問題・エラーメッセージ
調べていくと、100と010では文字コードとして変換されて
(10進数 UTF-8)
100->10 49 48 48
010-> 48 49 48
となるため、1バイト目の10 と48が比較され、10<48よって
100<010という結論になって希望通りの並び順にならないのではないか?
と考えています(正しいかどうかも完全に理解できていないかと思いますが。。。)
該当のソースコード
javascript
1 const obj={"100":1,"200":2,"010":3} 2 3var pairs = Object.entries(obj); 4pairs.sort(function(p1, p2){ 5 var p1Key = p1[0], p2Key = p2[0]; 6 if(p1Key < p2Key){ return -1; } 7 if(p1Key > p2Key){ return 1; } 8 return 0; 9}) 10objConv = Object.fromEntries(pairs); 11console.log(objConv); 12
補足情報(FW/ツールのバージョンなど)
CodePenにてテスト中。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー