Comment compresser les string en JS? [dupliquer]

Oct 03 2020

essayer d'écrire func pour compresser la chaîne (2 lettres égales deviennent 1). N'obtenez pas comment enregistrer la progression de la compression (essayer un combo différent avec concat- échec). Chaque fois que je forprends la chaîne complète CodePen

let pass = '1122333456';

function CompressPass(string) {
  for (let i = 0; i < string.length; i++) {

    let concisePassword = string.split('');
    const item = string[i];
    const nextItem = string[i + 1];
    console.log(+item, +nextItem);

    if (item === nextItem) {
      concisePassword.splice(i, 1);
      console.log(concisePassword);
    } else {
      console.log('not equal: ', +item, +nextItem);
    }
  };
}
CompressPass(pass);

Réponses

1 amirseify Oct 03 2020 at 02:20

peut-être que cela t'aidera

let pass = '11223322345666600222222';
function CompressPass (string) {
  string += '-';
  let str = '';
  for (let i = 1; i < string.length; i++) {
    const nextItem = string[i];
    const item = string[i - 1];
     if (item != nextItem){
      str += item;
     }
  };
  return str;
}
console.log(CompressPass(pass))

1 subhadippahari Oct 03 2020 at 01:57

vous pouvez essayer 'lz-string' pour compresser et décompresser la chaîne en javascript.

** Je l'ai utilisé pour compresser les données de stockage local (car le stockage local n'a qu'une limite de 5 Mo)

** les résultats peuvent ne pas être visibles pour les chaînes plus courtes, mais vous pouvez l'essayer.

relier: https://pieroxy.net/blog/pages/lz-string/index.html

exemple: (à partir de ce lien mentionné ci-dessus)

<script language="javascript" src="lz-string.js"></script>

<script>
   var string = "This is my compression test.";
   alert("Size of sample is: " + string.length);

   var compressed = LZString.compress(string);
   alert("Size of compressed sample is: " + compressed.length);

   string = LZString.decompress(compressed);
   alert("Sample is: " + string);
</script>