Hola,
Cita:
Iniciado por Beatzoo
... Pero me vas a perdonar, pero sigo sin entender el funcionamiento, porque segun me dices, los dos metodos son iguales, solo que uno empieza a buscar por la derecha y el otro por la izquierda. Pero entonces, segun mi logica, los indices para "apple" con un lastIndexOf serian 0 o 2, pero un 3? No lo pillo, seguro es una tonteria, esto me pasa muy a menudo me encanta liarme gratuitamente

Creo que posiblemente te confunde porque olvidaste que los índices comienzan de 0, como indica
Alexis88 en su post, aunque creo que le hizo falta mencionarlo mas claro.
Código:
Array(
0 => 'oranges',
1 => 'apples',
2 => 'pears',
3 => 'apples'
)
Si usas indexOf('apples') te va a devolver 1, porque ese es su índice en la lista, si usas lastIndexOf('apples') te va a devolver 3 porque ese es su índice en la lista, de la última vez que aparece 'apples'.
Lo de agregar un parámetro adicional a los métodos ya es un agregado al mismo funcionamiento anterior, solamente que inicia la búsqueda donde le indiques, no desde el principio o el final dependiendo si es indexOf o lastIndexOf. En ese caso también es muy importante que devuelva el índice del elemento porque te sirve en la misma función.
lastIndexOf('apples', lastIndexOf('apples'));
En ese caso puedes usarlo en un bucle que vaya buscando todas las ocurrencias del elemento consecutivamente.
Saludos,