Olá Jocarlos, boa noite!
*Resolução do Problema: *
De acordo com a sua pergunta, você gostaria de saber como foi o comportamento do metodo splice. Vamos lá.
*Solução do Problema: *
O metodo splice serve para adicionar ou excluir (ou os 2 ao mesmo tempo) um valor dentro de um array. Vamos a sintaxe:
splice(Inicio, excluir, valor1, valor2, ...)
- O valor do1 parametro é um numero, ele serve para definir onde ele deve começar à adicionar ou excluir um valor.
- O valor do 2 parametro é um numero, ele indica quantos valores você deseja excluir do array. Por exemplo, se o valor for 2, ele vai excluir 2 valores começando da posição 3 de um array.
- Do 3 parametro em diante, pode ser qualquer valor: string, number, array, object e etc. Por exemplo, ele vai adicionar esse valor apartir da posição definida no 1 parametro da função.
E por fim, o valor que a função splice() retorna é um novo array com os valores alterados.
*Conclusão: *
No seu código, você exclui o valor informado no array de acordo com o contador, mas você não esta pegando novo array com o valor excluido que é o splice esta retornando.
Você deveria fazer isso lá dentro do if onde você usa splice:
destinosPossiveis = destinosPossiveis.splice(contador,1)
Isso vai fazer com que você tenha o array com o valor "Rio de Janeiro" excluido.
*Nota: *
No seu segundo comentário, você gostaria de saber se da para por o nome de um valor que esta dentro do array como argumento do 1 parametro do splice e não seu indice. A resposta para isso é não, não da, porque o valor do 1 parametro tem q ser um number.
Mas você pode usar o metodo indexOf(string) para obter o indice de um valor especifico em um array, e com esse valor você pode passar como argumento para o splice, desse jeito:
currentIndex = destinosPossiveis.indexOf(destinoDeInteresse)
destinosPossiveis = destinosPossiveis.splice(currentIndex,1)
*Despedida: *
Tenha um bom Estudo!!