この解答例は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 を使っていますが、より大きな数字に対しても正しく比較するには、より複雑なアルゴリズムを使う必要があります。