jsでオブジェクトをsortする必要性はあるのか

経緯

いつものごとく躓いたので記録を兼ねて残しておく。

ググると、"Object.entries"、"sort"、"Object.fromEntries"、のステップを踏むパターンをよく見かける。しかし、property が0 padding な数を string にした場合だとこの処理は通用しなくなる。

サンプルコードと結果

const test = {

	'10': 'エジプト',

	'01': '北海道',

	'02': '青森',

}



const s = Object.entries(test)

s.sort((a :[string, string], b :[string, string]) => {

	const a0 =  parseInt(a[0])

	const b0 =  parseInt(b[0])

	if(Number.isNaN(a0) || Number.isNaN(b0)){

		throw new Response('states has bad value.', {status: 500})

	}

	return a0 < b0 ? -1 : 1

})

s.map(item => console.log(item))



const u = Object.fromEntries(s)



console.log(u)
(2) ['01', '北海道']

(2) ['02', '青森']

(2) ['10', 'エジプト']

{10: 'エジプト', 01: '北海道', 02: '青森'}

結論

jsonデータの並びを担保したければ配列にするべし。