Como sabemos, hay un método .forEach() para matrices en JavaScript. Pero Strings no tiene ese método integrado.
Entonces, ¿hay algún problema con respecto al siguiente fragmento de código: String.prototype.forEach = Array.prototype.forEach ?
Esta configuración me ayuda a usar .forEach para cadenas.
let myName = "Avetik"; String.prototype.forEach = Array.prototype.forEach; myName.forEach(char => { console.log(char); })El código anterior funciona bien y genera todos los caracteres de mi nombre.
Ya adivinaste que soy un novato en JS.
Puedes , pero:
String.prototype.forEach , puede interferir con otro código que usa métodos en el prototipo de String)[...str].forEach muy fácilmente, y también puedes hacer for (const char of str) { muy fácilmente // Say we want to iterate over this string: const str = 'str'; // without adding a method to the prototype. Easy: // One method: for (const char of str) { console.log(char); } // Another method: [...str].forEach((char) => { console.log(char); });Array.prototype.contains y Array.prototype.flatten )Entonces, es factible, pero probablemente no sea una buena idea.
Puedes añadir tu propio envoltorio...
¡Apenas puedo resistir esas malas ideas!
Mi consejo, hazlo y espera el día o tales prácticas se volverán en tu contra. Entonces tendrá la medida de tal error, que espero definitivamente lo disuadirá de jugar con la sintaxis del lenguaje y, con un poco de suerte, podrá convertirse en un gurú del lenguaje informático.
if(typeof String.prototype.forEach !== "function") { String.prototype.forEach = Array.from(this).forEach }; // sample usage : let abc = 'abc' abc.forEach((letter, index)=> console.log(letter,index))pero sería mejor usar un nombre menos ambiguo
if(typeof String.prototype.forEachLetter !== "function") { String.prototype.forEachLetter = Array.from(this).forEach }; // sample usage : let abc = 'abc' abc.forEachLetter((letter, index)=> console.log(letter,index)).forEach() es inherentemente una función para matrices (grupos de varias cosas). Una cadena es solo 1 cosa, no hay forma de hacer algo para "cada uno" cuando solo hay 1.
Puede usar .split() en una cadena para convertirla en una matriz de cada carácter. Luego haga las operaciones de matriz que desee con el resultado de eso. Y luego .join() en la matriz para volver a convertirla en una cadena si es necesario.
var myString = "beans"; var myArray = myString.split(); // this will be an array of 5 strings: ['b', 'e', 'a', 'n', 's']