Estoy tratando de entender lo que esto significa?
Lo que estoy pensando es que la phrase pasará una parte de la matriz, por lo que en este caso es phrase.palindrome eve Ese método lo tomará y lo ejecutará. Primero, var len toma eve y elimina 1 usando la length -1. Esto da como resultado que a var len se le asigne el número dos ya que la longitud de eve es 3. Ahora for está en uso, por lo que var i = 0; i <= len/2; i++ .
ahora se convierte en var i = 1 ; 1 <= 1; i++ "es esto correcto"
no entiendo que pasa aqui:
for (var i = 0; i <= len/2; i++) { if (this.charAt(i) !== this.charAt(len-i)) { return false;Aquí está todo el código:
String.prototype.palindrome = function() { var len = this.length-1; for (var i = 0; i <= len/2; i++) { if (this.charAt(i) !== this.charAt(len-i)) { return false; } } return true; }; var phrases = ["eve", "kayak", "mom", "wow", "Not a palindrome"]; for (var i = 0; i < phrases.length; i++) { var phrase = phrases[i]; if (phrase.palindrome()) { console.log("'" + phrase + "' is a palindrome"); } else { console.log("'" + phrase + "' is NOT a palindrome"); } }El código esencialmente itera a través de la cadena desde ambas direcciones, comparando el primer y el último carácter (índices 0 y len), luego el segundo desde el primero y el segundo desde el último y así sucesivamente hasta llegar al medio. Una palabra es un palíndromo si y solo si el primer y el último carácter son los mismos y el penúltimo y el penúltimo carácter son los mismos y así sucesivamente.
Tenga en cuenta que hay algo muy mal con este código. Si bien es técnicamente posible mutar los prototipos de los tipos incorporados en Javascript, nunca, nunca, nunca debes hacerlo. No obtiene ninguna funcionalidad que no obtendría de una función normal, mientras viola gravemente el principio de menor sorpresa. Trate todos los tipos de otras bibliotecas, incluidas las integradas, como si estuvieran cerradas para modificación y abiertas para extensión.
Creo que esta línea tiene error:
for (var i = 0; i <= len/2; i++) {Porque a veces la longitud puede ser 3,5,7... y eso puede ser un problema.
Agregué algunos usando ejemplos:
for (var i = 0; i <= Math.floor(len / 2); i++) { // That same thing with floor in positive numbers, but in negative numbers that works like ceil. for (var i = 0; i <= ~~(len / 2); i++) { // That same thing with floor, we can think like this pollyfill of floor. for (var i = 0; i <= ~~(len / 2) + (Math.abs(len)>len?-1:0); i++) {