J'ai une chaîne qui ressemble à quelque chose comme 'test: 1; bonjour: cinq; juste: 23'. Avec cette chaîne, je dois être en mesure de faire ce qui suit.javascript remplacer/ajouter
....
var test = MergeTokens('test:1;hello:five;just:23', 'yes:23;test:567');
...
Le résultat final devrait être « test: 567, bonjour: cinq, il suffit de: 23, oui: 23 » (notez l'ordre exact des jetons est pas important).
Je me demandais si quelqu'un avait des idées intelligentes sur la façon de procéder. Je pensais remplacer une regex sur chacun des jetons à droite et si un remplacement ne se produisait pas parce qu'il n'y avait pas de correspondance, il suffit de l'ajouter. Mais peut-être qu'il y a un meilleur moyen.
Vive Anthony
Edit: Le côté droit devrait l'emporter sur la gauche. La gauche étant ce qui était à l'origine là et le côté droit étant le nouveau contenu. Une autre façon de voir, c'est que vous ne gardez les jetons sur la gauche que s'ils n'existent pas sur la droite et que vous gardez tous les jetons sur la droite.
@Ferdinand Merci pour la réponse. Le problème est l'efficacité avec laquelle la solution que vous avez proposée. Je pensais d'abord à des lignes similaires mais je l'ai escompté en raison de la complexité O (n * z) de la fusion (où n et z sont les jetons de nombre respectivement à gauche et à droite), sans parler de la division et de la jointure.
Par conséquent, pourquoi j'essayais de regarder le chemin d'une regex. Peut-être dans les coulisses, regex est tout aussi mauvais ou pire, mais ayant une regex qui supprime tout jeton de la chaîne de gauche qui existe sur la droite (O (n) pour le montant total de jeton sur la droite), puis ajoutez le 2 chaînes ensemble (c'est-à-dire test de la cuve = test1 + test2) semble plus efficace. grâce
Recherche dans un Hashtable (JavaScript Object) est O (1), donc l'opération de fusion est linéaire, pas O (n²). Vous ne pouvez pas vraiment faire mieux que cela, même si regex avait le pouvoir de faire ce que vous vouliez (ce qui n'est pas possible). – bobince
cool c'est quelque chose que je savais ... – vdhant