Hola,
Posiblemente te aclare ciertas dudas, indexOf() busca del inicio de la cadena o del array hasta el final y te da la posición del elemento; mientras que lastIndexOf() busca desde el final de la cadena o el array hasta el principio y te da la posición del elemento encontrado.
Cita:
Iniciado por Beatzoo ...Lo de que buscaba la última aparición no lo sabía, entendí que ambos tienen la misma función, pero comenzando por lugares opuestos, algo no me cuadra, o el libro o tu explicación, porque decís cosas diferentes. ...
Da lo mismo, buscar desde el principio y encontrar la última vez que aparece; o buscar desde el final y encontrar la primera vez que "desde el final" aparece. El punto es que te da la posición del elemento que esta siendo buscado, siendo este el primero o el último.
En el caso de lastIndexOf() lógicamente no es lo mismo buscar de adelante o atrás, el primero desde adelante no va a ser ineficiente, mientras que el segundo, buscar de atrás hacia adelante va a ser mas eficiente porque busca menos. Pero eso ya son detalles internos de la implementación de Javascript.
Cita:
Iniciado por Beatzoo ... Es lo único que se me ocurre, y lo he pensado, que si empieza por la derecha no lo haga como índice 0, pero el autor no hace ninguna referencia a que este método no utilice índices, si no la propiedad length, lo cual me parece un gran error por su parte si se confirma lo que comentas. ...
Funciona dando la posición del elemento por un motivo muy importante, que se usa dentro de otras funciones, por ejemplo:
data.slice(data.indexOf(a), data.lastIndexOf(b));
Sino te diera la posición del elemento tendrías que estar haciendo ajustes al 'offset' de la posición final, como por ejemplo, length - lastIndexOf(). En otros lenguajes es primordial que funcione de esta forma para que muchas partes del lenguaje funcionen de forma lógica.
Saludos,