JavaScript で文字列を圧縮する
JavaScript では、gzip などのファイルの圧縮など、さまざまな圧縮が可能です。 ここでは、文字列を圧縮する 2つの方法について説明します。
最初に、ハフマン アルゴリズムを取り上げます。 そして後で、タスクを解決する LZString の方法について説明します。
js-string-compression
を使用して JavaScript で文字列を圧縮する
まず、ファイル (okay.js
) で構成されるフォルダーを設定します。 コードエディターには VSCode を使用しており、そのターミナルで次のコマンドを記述します。
npm i js-string-compression
これにより、ハフマン アルゴリズムの実装に必要なパッケージが追加されます。 パッケージがインストールされると、ルート ディレクトリに package.json
および package-lock.json
ファイルが作成されます。
package.json
は次のようになります。
{
"dependencies": {
"js-string-compression": "^1.0.1"
}
}
次の段階では、基本的なコードを記述し、文字列を定義し、チェックしたいパラメーターを設定します。 コード行を確認してみましょう。
コードスニペット:
var jsscompress = require('js-string-compression');
var raw_text =
'Lorem Ipsum is simply dummy text of the printing and typesetting industry.';
var hm = new jsscompress.Hauffman();
var compressed = hm.compress(raw_text);
console.log('before compressed: ' + raw_text);
console.log('length: ' + raw_text.length);
console.log('after compressed: ' + compressed);
console.log('length: ' + compressed.length);
console.log('decompressed: ' + hm.decompress(compressed));
出力:
LZString ライブラリを使用して JavaScript で文字列を圧縮する
LZString ライブラリを介して文字列を圧縮するには、HTML ファイルと js ファイルが必要です。 LZString は、文字列を圧縮するための Perl 実装 (lz-string
) です。
依存関係をインポートするには、HTML ファイルと js ファイルがあるルート ディレクトリのターミナルで、以下のコマンド ラインをフォローアップします。
npm install -g lz-string
次に、new.html
という名前の HTML ファイルと new.js
ファイルを作成します。 また、LZString 実装を格納するlz-string.js
という別のファイルも作成します。
完全なコードについては、この リポジトリ を検討しました。
ここで、new.js
にいくつかの行を記述します。プレビューは以下のようになります。
コードスニペット:
var string =
'Lorem Ipsum is simply dummy text of the printing and typesetting industry.';
console.log('Size of sample is: ' + string.length);
var compressed = LZString.compress(string);
console.log('Size of compressed sample is: ' + compressed.length);
console.log(compressed);
string = LZString.decompress(compressed);
console.log('Sample is: ' + string);
new.js
ファイルを準備したら、lz-string.js
と new.js
を new.html
ファイルにインポートします。 ブラウザで HTML ファイルを開くと、出力は次のようになります。
出力:
お気づきのように、両方のソリューションを比較すると、LZString 実装の方が出力が優れています。 サーバーストレージに巨大なサイズのデータを保存できる大規模なケースの問題を解決するために、専用に進化および設計されました。