Ich habe Probleme, meine Lösung in die "Jaden Casing Strings" -Katas auf Codewars zu re-factory. Das Problem ist, den ersten Buchstaben jedes Wortes eines bestimmten Satz zu nutzen, wie folgt aus:Verwenden von reduce() beim Definieren neuer String-Methoden
Nicht Jaden Gefasste: „Wie kann Spiegel real sein, wenn unsere Augen nicht real sind“
Jaden Gefasste: „Wie kann Mirrors Be Real Wenn unsere Augen nicht real sind“
Hier ist meine Lösung ist:
function jayden (sen) {
sen = sen.split('').reduce(function (str, next, ind) {
return str + (!sen[ind - 1] || sen[ind - 1] === ' ' ? next.toUpperCase() : next);
}, '');
return sen
}
String.prototype.toJadenCase = function() {
return jayden(this)
}
im Idealfall würde ich mag den Inhalt der jayden
Funktion haben, innerhalb von String.prototype.toJadenCase = function() {
aber ich kann nicht scheinen durchzu iterieren. Ist es möglich, durch this
zu iterieren?
Ich weiß, dass dies nur für eine kleine Kata ist, aber Sie sollten den Prototyp nie wirklich bearbeiten. Erstellen Sie entweder eigene, die "String" erben, oder verwenden Sie einfach die von Ihnen erstellte benannte Funktion. Wenn Sie mit anderen Leuten arbeiten, stellt es Anwendungen für eine Welt der Schmerzen bereit, wenn jeder anfängt, zu den Prototypen von Primitiven hinzuzufügen, was sie wollen: 'String.prototype.toUpperCase = function() {return" GOT YOU GOOD !!!! " } ' – cdbajorin
In einer Methode für' String.prototype' ist 'this' die Zeichenfolge, und Sie können alles tun, was Sie mit einer Zeichenfolge tun könnten. Was funktioniert nicht für dich? –
@torazaburo Nach dem Lesen Ihres Kommentars erkannte ich den Fehler, den ich in erster Linie gemacht habe. Ich habe versucht, durch "this" zu iterieren, als wäre es 'this.split ('')', das ein Array von Strings statt einer Zeichenkette ist. Vielen Dank! –