El siguiente ejemplo obtiene el último carácter de una cadena y llama a indexOf en el carácter.
var sentence = "welcome to bootcamp prep"; var lastChar = sentence[sentence.length - 1]; console.log(lastChar); // "p" console.log(sentence.indexOf(lastChar)); // 18 Entiendo que lastChar contiene el último carácter de la cadena y que indexOf devuelve un carácter que está buscando.
¿Por qué la llamada devuelve 18? ¿Cómo funciona indexOf ?
La función indexOf de una cadena no devuelve un carácter sino que devuelve la posición del primer lugar en el que se encuentra la cadena o el carácter, no el carácter en sí.
En esta pregunta, el último carácter es "p" , como se encuentra en esta línea:
var lastChar = sentence[sentence.length - 1]; Sin embargo, al mirar la cadena, puede ver que la letra "p" se encuentra más de una vez:
"welcome to bootcamp prep" // ^ ^ ^ // 18 20 23Los números indicados en el comentario (18, 20 y 23) representan los índices (ubicaciones) del carácter dentro de la cadena.
¿Qué significan estos índices? En JavaScript, los índices comienzan en 0, por lo que la primera letra ("w") estará en el índice 0. En esta cadena, el carácter "p" se encuentra en los lugares 19, 21 y 24, que se traducen en los índices 18, 20 y 23.
La primera instancia de la cadena buscada "p" está en el índice 18. Por lo tanto, al ejecutar esta línea:
console.log(sentence.indexOf(lastChar)); // 18El resultado será 18, el índice de la primera instancia del último carácter.
(Nota al margen: suponiendo que sea un principiante en lo que respecta a JavaScript, intente no usar la palabra clave var siempre que sea posible. Si la variable necesita cambiar, use let , o si la variable permanece igual, use const ).
Porque indexOf devuelve la primera letra que se encuentra que coincide con el argumento.
welcome to bootcam[p] <-- here prep .
JavaScript usa tipos de datos primitivos, por lo que su cadena es solo una cadena y no tiene ninguna referencia al valor original.