0
votes

Comment supprimer la première virgule lors de la poussée à l'intérieur de la valeur d'entrée avec Split (',')?

J'ai un problème avec la fonction Split (), j'ai une entrée dans laquelle je pousse des identifiants que je passe à travers des objets de mappage.

mon HTML: strong> p>

value=",100,101"


4 commentaires

Je suggérerais de corriger la logique qui crée la matrice avec des éléments vides au lieu de pirater la solution pour supprimer les caractères principaux , . Au premier abord, il semble que l'utilisation de Split () et poussoir () dans chaque itération de votre pour boucle est une odeur de code, notamment parce que Vous ne faites rien avec le résultat. Pouvez-vous ajouter un exemple de travail à la question.


Je ne vois pas comment vous obtenez du tout. Sont-ils ajoutés dans le code que vous n'avez pas montré? Cette ligne ne le fait pas: imgidinput.val (). Split (","). Push (pièces jointes [i] .Id); c'est effectivement un long no-op, il crée un tableau (le résultat de la scission), pousse quelque chose dessus, puis le jette.


@ T.J.Crowder Oui, ce n'est pas du code complet, je reçois des identifiants à partir de pièces jointes variables, comme vous pouvez le constater, je me fais mapper et d'obtenir des objets avec des attributs comme ID, URL etc.


Couple de solutions de rechange rapides: ", 100,101" .replace (",", "") .trim (). Split ("") .join (",") ou ", 100,101 « Donc, cela ne se produit pas est une meilleure approche (donc un problème xy)


3 Réponses :


0
votes

Vous pouvez utiliser Remplacer

imgIdInput.val( imgIdInput.val().split(",").join().replace(",","") );


console.log(",100,101".replace(",",""))  // "100,101"


2 commentaires

Bien que cela fonctionne pour la solution décrite dans l'OP, c'est vraiment pas une bonne idée. Que se passe-t-il s'il n'y a pas de dirigeant , dans la sortie - comme il ne devrait pas y avoir. Dans ce cas, les deux premiers articles sont fusionnés


Et bien que vous puissiez la modifier pour simplement supprimer un de premier plan, , cela met la cassette sur la fissure plutôt que de fixer le verre. :-)



3
votes

Le problème est probablement que "". Split (",") code> vous donne [""] code>, pas un tableau vide.

Je suggérerais Division de la chaîne une fois avant la boucle (manipulation du problème avec "" code>), ajoutant à la matrice résultante, puis la convertissant à une chaîne une fois à la fin, voir *** Code> Commentaires: P>

frame.on( 'select', function() {
  var imgIdInput = $( '.custom-img-id' );

  var attachments = frame.state().get('selection').map(function( a ) {
    a.toJSON();
    return a;
  }),
  thesamepicture = false,
  i;

  // *** Get the current IDs as an array
  var val = imgIdInput.val().trim();
  var ids = val ? imgIdInput.val().split(",") : [];
  for (i = 0; i < attachments.length; ++i) {
      imgContainer.append('<img src="' + attachments[i].attributes.url + '"/>');
      
      // *** Add to the array
      ids.push(attachments[i].id);
  }
  // *** Save the IDs in the hidden input
  imgIdInput.val(ids.join());
});


1 commentaires

Merci beaucoup! Maintenant, tout fonctionne et j'ai eu le point ce que vous avez fait.



0
votes

Vous devez utiliser la fonction Split, Filtrer et rejoindre la matrice et la chaîne pour obtenir la sortie attendue.

p>

var value=",100,101"

value = value.split(",")

const finalValue = value.filter(tmp =>{
return tmp !== ''
})

console.log(finalValue.join(","));


0 commentaires