技術ブログ

プログラミング、IT関連の記事中心

JavaScriptの配列ソートを数字でも文字列でもソートできる関数

目次

数字の配列をソートする方法

以下のサンプルのように、sort関数を使用してソートを行うことができます。

const numArrayData = [1, 3, 2]
numArrayData.sort((a, b) => {
  return b - a;
});
console.log(numArrayData); // [3, 2, 1]

文字列の配列をソートする方法

以下のサンプルのように、sort関数を使用してソートを行うことができます。

const strArrayData = ["a", "b", "c"]
strArrayData.sort((a, b) => {
  if (a > b){
    return -1;
  } else {
    return 1;
  }
});
console.log(strArrayData); // ['c', 'b', 'a']

数字でも文字列でもソートする方法

以下の関数を用意して、その関数をsort内で呼び出すことで、ソートすることが可能です。

const arraySortAct = (a, b) => {
  if (!isNaN(a) && !isNaN(b)) {
    return b - a;
  } else {
    if (a > b) {
      return -1;
    } else {
      return 1;
    }
  }
};

数字配列の場合、以下の様に呼び出すことが可能です。

const arraySortAct = (a, b) => {
  if (!isNaN(a) && !isNaN(b)) {
    return b - a;
  } else {
    if (a > b) {
      return -1;
    } else {
      return 1;
    }
  }
};

const num2ArrayData = [1, 3, 2]
num2ArrayData.sort((a, b) => arraySortAct(a, b));
console.log(num2ArrayData); // [3, 2, 1]

文字列配列の場合、以下の様に呼び出すことが可能です。

const arraySortAct = (a, b) => {
  if (!isNaN(a) && !isNaN(b)) {
    return b - a;
  } else {
    if (a > b) {
      return -1;
    } else {
      return 1;
    }
  }
};

const str2ArrayData = ["a", "b", "c"]
str2ArrayData.sort((a, b) => arraySortAct(a, b));
console.log(str2ArrayData); // ['c', 'b', 'a']

上記の全サンプルは以下です。

const arraySortAct = (a, b) => {
  if (!isNaN(a) && !isNaN(b)) {
    return b - a;
  } else {
    if (a > b) {
      return -1;
    } else {
      return 1;
    }
  }
};

const str2ArrayData = ["a", "b", "c"]
str2ArrayData.sort((a, b) => arraySortAct(a, b));
console.log(str2ArrayData); // ['c', 'b', 'a']

const num2ArrayData = [1, 3, 2]
num2ArrayData.sort((a, b) => arraySortAct(a, b));
console.log(num2ArrayData); // [3, 2, 1]