Estoy tratando de hacer un método de JavaScript de trim() casero. Quiero decir, lo que quiero hacer se puede lograr usando trim() : para eliminar todos los espacios en blanco de la izquierda y la derecha de la string .
Se me ocurrió esta engorrosa solución; Creo que debería funcionar, pero no funciona en absoluto; en cambio, está eliminando todos los elementos de la string array y dejando solo una array de cadenas con un espacio vacío como elemento único.
Aquí hay un fragmento de ejecución del código que hice:
const stringWithManyWhiteSpaces = ' I like ants... Remember us '; const charArray = [...stringWithManyWhiteSpaces]; function killLeftToRight(charArr) { for ( let i = 0; i < charArr.length; i++) { if (charArr[i] === ' ') { charArr.splice(i + 1); } else { break; } } } function killRightToLeft(charArr) { for ( let i = charArr.length -1; i >= 0; i--) { if (charArr[i] === ' ') { charArr.splice(i + 1); } else { break; } } } function myTrim(){ killRightToLeft(charArray) killLeftToRight(charArray); console.log(charArray) } myTrim();¿Puede alguien dejarme averiguar qué está mal con mi código? Muchas gracias.
splice requiere que especifique cuántos eliminar, en el segundo argumentosplice eliminará el elemento en el índice dado de la matriz, por lo que en la próxima iteración, si está iterando a través de índices en orden ascendente, puede "omitir" un elemento, debido a que su índice se acaba de volver a calcular Más fácil de usar .pop (eliminar desde el final) y .shift (eliminar desde el principio).
const stringWithManyWhiteSpaces = ' I like ants... Remember us '; function killLeftToRight(charArr) { while (charArr[0] === ' ') { charArr.shift(); } } function killRightToLeft(charArr) { while (charArr[charArr.length - 1] === ' ') { charArr.pop(); } } function myTrim(str){ const charArray = [...str]; killRightToLeft(charArray); killLeftToRight(charArray); console.log(charArray.join('')); } myTrim(stringWithManyWhiteSpaces);su enfoque se puede cambiar de diferentes maneras, por lo que funcionaría bien como se mencionó en la respuesta anterior, pero si su objetivo es tener su propia implementación para recortar, ¿qué tal si lo implementa de una manera más simple?:
const stringWithManyWhiteSpaces = ` I like ants... Remember us `; function trimMe(stringToTrim) { return stringToTrim.replace(/^[\s\n]+|[\s\n]+$/g, '') } console.log(trimMe(stringWithManyWhiteSpaces));todo lo que necesita para eliminar los espacios en blanco es string.trim()