Je suis nouveau pour javascript, j'ai une longue chaîne que je veux diviser après la 3e virgule et changer de format différent. Si vous ne comprenez pas mes problèmes. Veuillez voir l'exemple ci-dessous

Ma chaîne:

var test= "10,Idly(3 Pcs),200,10,Ghee Podi Idly,300";

Je veux une sortie comme celle-ci: (Chaque élément devrait être sur la ligne suivante)

Inactif (3 pièces) - 10 = 200

Ghee Podi oisivement - 10 = 300

Comment changer comme ça en utilisant JavaScript?

0
hikoo 9 août 2016 à 09:22

4 réponses

Meilleure réponse

Copiez-le et collez-le. La fonction est plus dynamique.

Exemples de données

var testData = "10,Idly(3 Pcs),200,10,Ghee Podi Idly,300";

Fonction

function writeData(data){
   data = data.split(',');
   var tempLine='';
   for(var i=0; i<data.length/3; i++) {
      tempLine += data[i*3+1] + ' - ' + data[i*3] + ' = ' + data[i*3+2] + '\n';
   }
   alert(tempLine);
   return tempLine;
}

Utilisation

writeData(testData);
1
Fatih TAN 9 août 2016 à 06:48

Si vous avez corrigé cette chaîne, vous pouvez l'utiliser sinon valider la chaîne.

var test= "10,Idly(3 Pcs),200,10,Ghee Podi Idly,300";
var test2= test.split(",");
var temp_Str= test2[1]+' - '+test2[0]+' = '+test2[2]+'\n';
temp_Str+= test2[4]+'-'+test2[3]+' = '+test2[5];
alert(temp_Str);
0
Jaydeep Mor 9 août 2016 à 06:41

Vous pouvez utiliser split pour diviser la chaîne sur chaque virgule. L'étape suivante consiste à parcourir les éléments, à placer l'élément actuel dans un tampon et à vider le tampon si sa taille est de trois. C'est donc quelque chose comme:

var tokens = test.split(",");
var buffer = [];
for (var i = 0; i < tokens.length; i++) {
   buffer.push(tokens[i]);
   if (buffer.length==3) {
      // process buffer here
      buffer = [];
  } 

}

0
mm759 9 août 2016 à 06:41

Utilisez la méthode split pour transformer la chaîne dans un tableau et chunk à partir de lodash ou de soulignement pour séparer le tableau en parties de 3.

// A custom chunk method from here -> http://stackoverflow.com/questions/8495687/split-array-into-chunks

Object.defineProperty(Array.prototype, 'chunk_inefficient', {
    value: function(chunkSize) {
        var array=this;
        return [].concat.apply([],
            array.map(function(elem,i) {
                return i%chunkSize ? [] : [array.slice(i,i+chunkSize)];
            })
        );
    }
});

var test= "10,Idly(3 Pcs),200,10,Ghee Podi Idly,300";

var arr = test.split(',');
var arr = arr.chunk_inefficient(3);
arr.forEach(function (item) {
    console.log(item[1]+' - '+item[0]+' = '+item[2]);
});
0
Marcos Kubis 9 août 2016 à 06:32