Remplacer plusieurs chaînes avec plusieurs autres chaînes

Je suis en train de remplacer plusieurs mots dans une chaîne avec plusieurs autres mots. La chaîne est "j'ai un chat, un chien et une chèvre."

Toutefois, cela ne produit pas "j'ai un chien, une chèvre, et un chat", mais au lieu de cela, il produit "j'ai un chat, un chat, et un chat". Est-il possible de remplacer les multiples chaînes avec plusieurs autres chaînes en même temps, en JavaScript, de sorte que le résultat correct sera produite?

var str = "I have a cat, a dog, and a goat.";
str = str.replace(/cat/gi, "dog");
str = str.replace(/dog/gi, "goat");
str = str.replace(/goat/gi, "cat");

//this produces "I have a cat, a cat, and a cat"
//but I wanted to produce the string "I have a dog, a goat, and a cat".
  • Je veux remplacer plusieurs mots dans une chaîne avec plusieurs d'autres termes, sans le remplacement des mots qui ont déjà été remplacés.
  • j'ai quelques différents requête, si je dnt sais utilisateur va entrer dans un chat ou un chien ou une chèvre(c'est au hasard à venir), mais à chaque fois que ce genre de mot viendra je besoin de le remplacer avec disons que "l'animal". comment obtenir ce scénario