Já faz algum tempo que não posto aqui no blog, muita coisa aconteceu nestes últimos dias, consegui passar nas provas, virei moderador do fórum imasters (sessão javascript) mudei de emprego, deixei de morar de aluguel e assim vai... Bem, deixando minha vida pessoal de lado, segue abaixo uma situação interessante que tive que passar.
Bem, foi lançado um desafio entre meus amigos para redução de uma implementação em javascript do método String.Format ( do .NET), a ideia era apenas de “copiar” a funcionalidade básica deste método, ganharia quem fizesse em uma menor quantidade de caracteres possível e este deveria ser compatível com os browsers mais utilizados (IE, Firefox, Opera etc)... Antes de começar com a minha implementação, fiz uma consulta básica na internet para conhecer as versões já existentes e fiquei impressionado com a dificuldade e o esforço algorítmico em que os à maioria autores tiveram para alcançar comportamento similar... Certo de que teria um desempenho melhor, iniciei com a escrita do meu algoritmo que ao final ficou assim:
String.Format = function(a) {
var b = Array.prototype.slice.call(arguments,1);
return a.replace(/{(\d+)}/g, function(){return b[RegExp.$1]});
};
Ele possui apenas 136 caracteres, valendo lembrar que ela pode ser reduzida em mais 6 caracteres*. Mas não para por ai, se a competição considerasse apenas o Firefox como navegador padrão, teria conseguido o valor impressionante de apenas 106 caracteres*!
//Executa apenas no Firefox V3.0 ou superior
String.format=function(a){
let b = Array.slice(arguments,1);
return a.replace(/{(\d+)}/g, function() b[RegExp.$1]);
}
*versão sem palavras reservadas e ponto-e-virgulas
Ao final, fiquei orgulhoso do meu desempenho, sem falar que acabei ganhando a competição e o prêmio que foi não precisar pagar o almoço de hoje hehehe.
Abraço pessoal, até a próxima!
quarta-feira, 23 de julho de 2008
Assinar:
Postagens (Atom)