JavaScriptで平仮名、カタカナ、漢字、数字、アルファベットが混ざっている配列にSortをかけた際はどのような順序になるのか、検証しました。(正直単純な配列なのでただsortをかけるだけでいいのですが、連想配列の際にも使えるようなコードで一旦記述しています。)
const dummyArray = ['ひらがな', 'カタカナ', '漢字', '123', 'abc']
dummyArray.sort((a, b) => {
if (a > b) {
return 1
} else {
return -1
}
})
console.dir('結果' + JSON.stringify(dummyArray))
また「ヴ」はカタカナの中の最後尾に来てしまうようで、ウの後に入れるには無理やりこうするしかありませんでした。
dummyArray.sort((a, b) => {
//最初の文字が「ヴ」だったら最初の文字のみ「ウン」に置き換えて比較する
const aName = a[0] === 'ヴ' ? a.replace('ヴ', 'ウン') : a
const bName = a[0] === 'ヴ' ? b.replace('ヴ', 'ウン') : b
if (aName > bName) {
return 1
} else {
return -1
}
})
こうすると、一応「ウ」の後にくるのですが、万が一要素の名前で「ウン」から始まるものがあれば「ヴ」よりも後に来てしまう可能性があるので、もう少しいい方法があるといいな、という感じです。。
また今回は一旦aName
に置き換えていますが、比較用に置き換えているだけなので元の要素の名前は変わらないです。
アルファベットや数字のみでsortをかけている資料はぼちぼちあるのですが、色々な要素でかけているものはあまりないので備忘録でした。閲覧ありがとうございました。