Disons que j'ai une liste de points déclarés dans ce format: x1, y1 x2, y2
listOfPoints : string = "12.2, 13.0 198.2, 141";
Que pourrais-je faire pour multiplier par 1,5, par exemple, chaque numéro de cette chaîne? Dois-je parcourir la liste des points et extraire une chaîne chaque fois qu'il y a un ',' ou '', convertir cette chaîne en nombre, la multiplier par 1,5 et la reconvertir en chaîne pour enfin la mettre dans une nouvelle chaîne (newListOfPoints)?
Ou existe-t-il une manière différente de le faire plus efficacement?
Je vous remercie.
1 réponse
Utilisez une expression régulière avec une fonction de remplacement pour faire correspondre les chiffres, éventuellement avec des décimales, et remplacez-les par ces chiffres multipliés par le nombre souhaité:
const listOfPoints = "12.2, 13.0 198.2, 141";
const multiplied = listOfPoints.replace(
/\d+(?:\.\d+)?/g,
match => match * 1.5
);
console.log(multiplied);
En raison de problèmes de virgule flottante, certains des nombres résultants peuvent avoir des chiffres de fin. Si vous ne le souhaitez pas, vous pouvez arrondir le nombre multiplié à un certain nombre de décimales:
const listOfPoints = "12.2, 13.0 198.2, 141";
const multiplied = listOfPoints.replace(
/\d+(?:\.\d+)?/g,
match => Math.round(1000 * match * 1.5) / 1000
);
console.log(multiplied);
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.