1. ホーム
  2. javascript

アルファベット/数字混在の配列をソート

2023-07-25 17:53:48

質問

私はアルファベットと数字でソートする必要がある混合配列を持っています。

[A1, A10, A11, A12, A2, A3, A4, B10, B2, F1, F12, F3]

どのようにソートすればそうなるのか

[A1, A2, A3, A4, A10, A11, A12, B2, B10, F1, F3, F12]

私が試したのは

arr.sort(function(a,b) {return a - b});

というのがありますが、これはアルファベット順に並べるだけです。 これは、ストレートJavaScriptまたはjQueryのどちらかで行うことができますか?

どのように解決するのですか?

var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;

function sortAlphaNum(a, b) {
  var aA = a.replace(reA, "");
  var bA = b.replace(reA, "");
  if (aA === bA) {
    var aN = parseInt(a.replace(reN, ""), 10);
    var bN = parseInt(b.replace(reN, ""), 10);
    return aN === bN ? 0 : aN > bN ? 1 : -1;
  } else {
    return aA > bA ? 1 : -1;
  }
}
console.log(
["A1", "A10", "A11", "A12", "A2", "A3", "A4", "B10", "B2", "F1", "F12", "F3"].sort(sortAlphaNum)
)