list = ["1", "d", "2", "a", "0", "B", "3", "C", "10", "11"]
をソートしたい普通にやると
list.sort()-> ["0" ,"11", "3", "C", "a", "1", "10", "2", "B", "d"]
とても残念な結果になるそんなときi18nAPIを使うと痒いところに手が届く

list.sort( function ( a , b ) {  return a.localeCompare( b , "ja-u-kn-true" )} )-> ["0", "1", "2", "3", "10", "11", "a", "B", "C", "d"]
または
list.sort( function ( a  , b ) {  return a.localeCompare( b , "ja" , { numeric : true } )} )-> ["0", "1", "2", "3", "10", "11", "a", "B", "C", "d"]

これで満足な結果になったさらにいろいろ面白いこともできる


・句読点無視 ( 「ああ」==「あ、あ」 )

list  = ["ああ", "あう", "あ、い"]

list.sort()-> ["あ、い", "ああ", "あう"]

list.sort( function( a , b ) {  return a.localeCompare( b , "ja" , { ignorePunctuation:true } )} )-> ["ああ", "あ、い", "あう"]


・小文字大文字区別しない ( 「あ」==「ぁ」 )

list = ["ああ", "あう", "ぁぃ"]

list.sort( )-> ["ぁぃ", "ああ", "あう"]

list.sort( function( a , b ) {  return a.localeCompare( b , "ja" , { caseFirst : "false" } )} )-> ["ああ", "ぁぃ", "あう"]


・濁点系も区別しない ( 「は」==「ば」==「ぱ」 )

list = ["ばう","はい","ぱあ"]

list.sort()-> ["はい", "ばう", "ぱあ"]

list.sort( function( a , b ) {  return a.localeCompare( b , "ja" , { sensitivity : "base" } )} )-> ["ぱあ", "はい", "ばう"]