🐝【TS】バージョン比較用関数について2020/10/28に公開2020/11/163件JavaScriptTypeScriptarraysortversiontechDiscussionstandard software2020/11/04に更新rana さんの記事にもコメントしましたが、 面接に出てた例ならば大丈夫ですが 上記コードだと、1.1.1a と、1.1.1b と 1.1.1A とを区別できない感じがします。 まあそんな変なバージョン記述する方がわるいとは言えるのですけれども。 ともかく、1.1.a でも、1.1.1a でも比較できるバージョン情報ソート関数書きましたのでご参考にでもどうぞ。 バージョン情報ソートができないと面接に落ちるので解答しとく - Qiita https://qiita.com/standard-software/items/acc24c27be222a6f1b20#comment-89ee78d8078b634eea11 返信を追加rithmety2020/11/05に更新翻訳元のコメントにも書かれていた解法ですが もっとシンプルに書けると思います 上記の standard software さんの記事内の versions と output で 動作確認した感じでは正しく動きます const sortVersions = (/** @type {string[]} */ unsortedVersions) => { return unsortedVersions .slice() .sort((q, w) => w.localeCompare(q, [], { numeric: true })) } 返信を追加nekoniki2020/11/06お二方ともコメントありがとうございます! 自分も文字列込みのバージョン表記にどうやって対応しようかと考えておりましたが、提示いただいた記事・コードなら確かに対応できそうです。 お恥ずかしながらlocaleCompareは初見だったので大変参考になりました。 一通りまとめさせていただいて、記事に追記という形で紹介させていただきたいと思います。 返信を追加
standard software2020/11/04に更新rana さんの記事にもコメントしましたが、 面接に出てた例ならば大丈夫ですが 上記コードだと、1.1.1a と、1.1.1b と 1.1.1A とを区別できない感じがします。 まあそんな変なバージョン記述する方がわるいとは言えるのですけれども。 ともかく、1.1.a でも、1.1.1a でも比較できるバージョン情報ソート関数書きましたのでご参考にでもどうぞ。 バージョン情報ソートができないと面接に落ちるので解答しとく - Qiita https://qiita.com/standard-software/items/acc24c27be222a6f1b20#comment-89ee78d8078b634eea11 返信を追加
rithmety2020/11/05に更新翻訳元のコメントにも書かれていた解法ですが もっとシンプルに書けると思います 上記の standard software さんの記事内の versions と output で 動作確認した感じでは正しく動きます const sortVersions = (/** @type {string[]} */ unsortedVersions) => { return unsortedVersions .slice() .sort((q, w) => w.localeCompare(q, [], { numeric: true })) } 返信を追加
nekoniki2020/11/06お二方ともコメントありがとうございます! 自分も文字列込みのバージョン表記にどうやって対応しようかと考えておりましたが、提示いただいた記事・コードなら確かに対応できそうです。 お恥ずかしながらlocaleCompareは初見だったので大変参考になりました。 一通りまとめさせていただいて、記事に追記という形で紹介させていただきたいと思います。 返信を追加
Discussion
rana さんの記事にもコメントしましたが、
面接に出てた例ならば大丈夫ですが
上記コードだと、1.1.1a と、1.1.1b と 1.1.1A とを区別できない感じがします。
まあそんな変なバージョン記述する方がわるいとは言えるのですけれども。
ともかく、1.1.a でも、1.1.1a でも比較できるバージョン情報ソート関数書きましたのでご参考にでもどうぞ。
バージョン情報ソートができないと面接に落ちるので解答しとく - Qiita
翻訳元のコメントにも書かれていた解法ですが
もっとシンプルに書けると思います
上記の standard software さんの記事内の versions と output で
動作確認した感じでは正しく動きます
お二方ともコメントありがとうございます!
自分も文字列込みのバージョン表記にどうやって対応しようかと考えておりましたが、提示いただいた記事・コードなら確かに対応できそうです。
お恥ずかしながら
localeCompareは初見だったので大変参考になりました。一通りまとめさせていただいて、記事に追記という形で紹介させていただきたいと思います。