2014-07-25 1 views
0

hey mec quelqu'un peut me aider à réparer mon code afin qu'il ne la tâche indiqué dans le texte,majuscule la première lettre de chaque mot dans une phrase

function tad(strg) { 
    var char = strg.split('-') 
    for (var i = 1; i < char.length; i++) { 
     return char[i].charAt(0).toUpperCase() + char[i].slice(1) 
    } 
} 

camelize("background-color") == 'backgroundColor' 
camelize("list-style-image") == 'listStyleImage' 

Répondre

0

Vous revenez avant que la boucle complète ses itérations . La meilleure chose ici serait d'utiliser Array.prototype.reduce comme celui-ci

function tad(strg) { 
    return strg.split('-').reduce(function(result, currentStr) { 
     return result + currentStr.charAt(0).toUpperCase() + currentStr.slice(1); 
    }, ""); 
} 

console.log(tad("background-color") === "backgroundColor"); 
# true 
console.log(tad("list-style-image") === "listStyleImage"); 
# true 
1

Changer votre fonction comme ci-dessous

function tad(strg) { 
    var char = strg.split('-') 
    for (var i = 1; i < char.length; i++) { 
     char[i] = char[i].charAt(0).toUpperCase() + char[i].slice(1) 
    } 
    return char.join(''); 
} 
0

Vous return de la fonction entière dans la première itération de cette boucle. Au lieu de cela, vous voulez le faire pour toutes les parties, et joindre les pièces ensemble:

function camelize(string) { 
    return string.split('-').map(function(part, i) { 
     return i ? part.charAt(0).toUpperCase() + part.slice(1) : part; 
    }).join(""); 
} 
// or 
function camelize(string) { 
    return string.split('-').reduce(function(m, part) { 
     return m + part.charAt(0).toUpperCase() + part.slice(1); 
    }); 
} 
// or 
function camelize(string) { 
    var parts = string.split('-'), 
     result = "" 
    for (var i = 1; i < parts.length; i++) { 
     result += parts[i].charAt(0).toUpperCase() + parts[i].slice(1) 
    } 
    return result; 
} 
+1

Votre première fonction retourne réellement "BackgroundColor" pour "background-color" – yantrakaar

+0

de @yantrakaar: Oh, non, je ne l'ai pas remarqué l'OP voulait que le premier mot * * différemment. Fixé maintenant – Bergi

0

Tout d'abord, vous devez concaténer les résultats dans une variable, au lieu de retourner dans la boucle.

En second lieu fo pas oublier d'ajouter premier élément du tableau, puisque la boucle est à partir de 1.

function camelize(strg) { 
    var char = strg.split('-'), result = char[0] 
    for (var i = 1; i < char.length; i++) { 
     result += char[i].charAt(0).toUpperCase() + char[i].slice(1) 
    } 
    return result 
} 

alert(camelize("background-color")); 
alert(camelize("list-style-image")); 

Voici violon:

http://jsfiddle.net/C78T3/

2

En supposant que vous voulez remplacer tous les mots combinaisons qui ont un trait d'union dans un mot enveloppé de chameau. Vous pouvez utiliser une expression régulière avec String.replace avec une fonction de rappel qui met en majuscule tous les mots après le trait d'union.

function camelize (strg) { 
    return strg.replace(/-(\w)/g, function (match) { 
    return match[1].toUpperCase(); 
    }); 
} 

camelize("background-color"); 
// backgroundColor 

camelize("z-index"); 
// zIndex 

camelize("list-style-image"); 
// listStyleImage 

JSFIDDLE

Questions connexes