Como resolver?

O ponto chave dessa questão é a utilização de várias multiplicações sucessivas, o que pode ser alcançado através de uma estrutura de repetição, mas também pode ser alcançado através de recursão.

Resolução

Vamos optar por resolver a questão utilizando recursão, será uma boa forma de praticar. Como em todo uso de recursão, começaremos pensando no caso base. Para esse desafio o caso base pode ser quando um número for menor do que 10, pois nesse caso ele já possui uma única casa decimal e a função deve retornar 0.

function multiplicativePersistance(num) {  if (num < 10) {
    return 0
  }
}

Feito isso, agora precisamos lidar com a multiplicação dos dígitos. Uma forma de fazer isso é separando os dígitos em um array, e podemos fazer isso convertendo ele primeiro para uma string. Agora precisamos multiplicar os elementos do array. Para isso podemos utilizar o .reduce() e iniciar o valor acumulado em 1, que será o elemento neutro da multiplicação. Uma vez que temos esse produto resultante basta retornarmos 1 + a persistência multiplica desse produto, porque ele irá chamar novamente a função até que chegue ao caso base (número menor que 0) e somará + 1 para cada vez que a multiplicação ocorreu. Vejamos como fica o código:

function multiplicativePersistance(num) {
  if (num < 10) {
    return 0
  }

  const digits = num.toString().split('')
  const product = digits.reduce((accum, current) => accum * current, 1)

  return 1 + multiplicativePersistance(product) 

}