Encontrar la enésima aparición de un carácter en una cadena en javascript

Estoy trabajando en un código javascript para encontrar la novena aparición de un carácter en una cadena. Utilizando laindexOf() En función de la función podemos obtener la primera aparición del personaje. Ahora el reto es conseguir la novena aparición del personaje. Pude obtener la segunda tercera aparición y así sucesivamente utilizando el código que se proporciona a continuación:

function myFunction() {
  var str = "abcdefabcddesadfasddsfsd.";

  var n = str.indexOf("d");
  document.write("First occurence " +n );

  var n1 = str.indexOf("d",parseInt(n+1));
  document.write("Second occurence " +n1 );

  var n2 = str.indexOf("d",parseInt(n1+1));
  document.write("Third occurence " +n2 );

  var n3 = str.indexOf("d",parseInt(n2+1));
  document.write("Fourth occurence " +n3);

  // and so on ...
}

El resultado se da a continuación.

First occurence 3 
Second occurence 9 
Third occurence 10 
Fourth occurence 14 
Fifth occurence 18 
Sixth occurence 19

Me gustaría generalizar el script para poder encontrar la novena aparición del carácter, ya que el código anterior nos obliga a repetir el script n veces. Déjame saber si hay un mejor método o alternativa para hacer lo mismo. Sería bueno si solo damos la ocurrencia (en tiempo de ejecución) para obtener el índice de ese personaje.

Las siguientes son algunas de mis preguntas:

¿Cómo lo hacemos en JavaScript?¿Algún marco proporciona alguna funcionalidad para hacer la misma implementación de una manera más fácil o cuáles son los métodos alternativos para implementar el mismo en otros marcos / idiomas?

Respuestas a la pregunta(5)

Su respuesta a la pregunta