kmmkの雑種系日記

学習まとめです。

配列を昇順に並び替えるロジック[JS]

はじめに

現在、プルダウンメニューで呼び出したapiデータのタイトルを昇順やら降順やらしていた時に迷ったので備忘録

配列を数値(昇順)並び替える

.js

var arrayNum = [1,2,3,4,5,1,2,3,4,5]
arrayNum.sort(function(a,b){
    return a - b
})
console.log(arrayNum)

出力

[1,1,2,2,3,3,4,4,5,5]

Array.prototype.sort() - JavaScript | MDN

arr.sort([compareFunction])

compareFunction(a, b) が 0 未満の場合、a を b より小さい添字にソートします。

負の結果:aの方が小さい

正の結果:aの方が大きい

オブジェクトの配列の場合

var items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic', value: 13 },
  { name: 'Zeros', value: 37 }
];

// 値順にソート
items.sort(function (a, b) {
  return a.value - b.value;
});

// 名前順にソート
items.sort(function(a, b) {
  var nameA = a.name.toUpperCase(); // 大文字と小文字を無視する
  var nameB = b.name.toUpperCase(); // 大文字と小文字を無視する
  if (nameA < nameB) {
    return -1;
  }
  if (nameA > nameB) {
    return 1;
  }

  // names must be equal
  return 0;
});

公式からの引用ですが、ドット記法でアクセスしてそれを比較する。それ以外はほぼ同じ

漢字・ひらがな・カタカナが混在してる中での昇順判定

.js

var array = ['トマト','ほうれん草','レンコン','小松菜','ハクサイ']

表示内容

["ほうれん草", "トマト", "ハクサイ", "レンコン", "小松菜"]

やっぱり混在してるとうまく判定できない

下記のサイトを参考にしたらライブラリを入れると行けるっぽい

【javascript】半角全角、ひらがなカタカナ変換が自在にできるライブラリ | ハトらぼ

業務で勝手にライブラリはいれれないので個人的のアプリではやってみようかなと思う。