この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
157. semver compare

function compare(semver1, semver2) {
  const version1 = semver1.split('.').map(Number);
  const version2 = semver2.split('.').map(Number);

  for (let i = 0; i < 3; i++) {
    if (version1[i] > version2[i]) {
      return 1;
    } else if (version1[i] < version2[i]) {
      return -1;
    }
  }

  return 0;
}

この関数では、まず受け取った2つのsemver文字列を . で分割し、それぞれの数字を配列に変換しています。次に、配列の各要素を順番に比較し、数字が大きい方が大きいと判断するようにしています。

たとえば、最初の例である compare('12.1.0', '12.0.9') の場合、version1[12, 1, 0] に、version2[12, 0, 9] になります。最初のループで、version1[0]version2[0] を比較して同じであることがわかります。次に、version1[1]version2[1] よりも大きいので、この場合は 1 を返します。

今回の問題では、マイナーバージョンやパッチバージョンがそれぞれ1桁に限られているので、ループの条件式に i < 3 を使っていますが、より大きな数字に対しても正しく比較するには、より複雑なアルゴリズムを使う必要があります。