2015-10-17 1 views
2

J'ai eu une interview JavaScript le mercredi dernier, et j'ai eu des problèmes avec l'une des questions. Peut-être que vous pouvez me donner la main avec ça?Prototypes JavaScript - entretien technique

La question était la suivante: comment feriez-vous de cette impression var a et s à la console, en cas de chameau, avec l'aide d'une fonction prototype ...

var s = “hello javier”; 
var a = “something else”; 

String.prototype.toCamelCase = function() { 
/* code */ 

return capitalize(this); 


}; 

... donc le résultat est la même chose que de faire cela?

console.log(s.toCamelCase()); 
console.log(a.toCamelCase()); 

>HelloJavier 
>SomethingElse 

Merci!

+3

Il est donc pas des prototypes, mais plutôt sur l'implémentation de fonction 'capitalize'? – dfsq

+1

Pouvez-vous inclure une tentative que vous avez faite? Ou, peut-être expliquer ce que vous avez compris à partir de la question et à quel point vous luttez avec elle commencent? Peur de demander une solution complète n'est pas ce que le SO est pour. Nous sommes là pour vous aider avec le code que vous avez écrit. –

Répondre

2

var s = 'hello javier'; 
 
var a = 'something else'; 
 

 
String.prototype.toCamelCase = function() { 
 
    return capitalize(this); 
 
}; 
 

 
function capitalize(string) { 
 
    return string.split(' ').map(function(string) { 
 
    return string.charAt(0).toUpperCase() + string.slice(1); 
 
    }).join(''); 
 
} 
 
console.log(a.toCamelCase()); 
 
console.log(s.toCamelCase());

Référence How do I make the first letter of a string uppercase in JavaScript?

+0

Probablement assez bon pour une interview, mais dans la convention ECMAScript vous ne voudriez pas capitaliser le premier mot (puisque c'est réservé aux constructeurs et aux singletons). – Touffy

+0

Dans votre solution, la première lettre est en majuscule. Edit: Touffy m'a battu –

+1

L'exemple de sortie donné montre que la première lettre doit être en majuscule. Il ne peut pas être idiomatique pour JavaScript, mais est approprié pour la question. –

1

j'aller avec quelque chose comme ceci:

var s = "hello javier"; 
var a = "something else"; 

String.prototype.toCamelCase = function() { 
    function capitalize(str){ 
    var strSplit = str.split(' '); 

    // starting the loop at 1 because we don't want 
    // to capitalize the first letter 
    for (var i = 1; i < strSplit.length; i+=1){ 
     var item = strSplit[i]; 

     // we take the substring beginning at character 0 (the first one) 
     // and having a length of one (so JUST the first one) 
     // and we set that to uppercase. 
     // Then we concatenate (add on) the substring beginning at 
     // character 1 (the second character). We don't give it a length 
     // so we get the rest. 
     var capitalized = item.substr(0,1).toUpperCase() + item.substr(1); 

     // then we set the value back into the array. 
     strSplit[i] = capitalized; 
    } 
    return strSplit.join(''); 
    } 

    return capitalize(this); 

}; 

// added for testing output 
console.log(s.toCamelCase()); 
console.log(a.toCamelCase()); 
+0

Dans les commentaires de la réponse d'AmmarCSE, ma solution ne capitalise pas la première lettre, ce qui est une exigence de l'exercice. –