11528 sujets
JavaScript, DOM et API Web HTML5
J'ai aussi pensé à la fonction sort mais c'est déjà tenté
Voici une autre solution qui est loin d'être simple, belle et performante
Voici une autre solution qui est loin d'être simple, belle et performante
var sentence = ' is the most used script Javascript language in the internet ';
var biggestWord = sentence.split(' ').map(function(){
if(arguments[0].length > arguments[2][arguments[2].length-1].length){
arguments[2].push(arguments[0]);
}
return arguments[2][arguments[2].length-1];
}).reverse()[0];
alert(biggestWord);
Bonjour,
Si je puis me permettre, ça n'est pas tout à fait ça. Un(e ?) closure, c'est une fonction qui est déclarée dans un contexte (par exemple une autre fonction) où des variables le sont également et qui fait appel à ces variables. Mais pas à des variables globales qui, par définition, sont accessibles partout.
Les closures sur wikipédia (en anglais, c'est plus complet).
Sinon, j'ai pas trouvé plus simple que la réponse de Jeje.
Shinuza a écrit :
Une closure c'est le fait d'accèder à variable qui est hors du scope d'une fonction, principe de base :
var ok = "doki"; function test() { alert(ok); }
Si je puis me permettre, ça n'est pas tout à fait ça. Un(e ?) closure, c'est une fonction qui est déclarée dans un contexte (par exemple une autre fonction) où des variables le sont également et qui fait appel à ces variables. Mais pas à des variables globales qui, par définition, sont accessibles partout.
Les closures sur wikipédia (en anglais, c'est plus complet).
Sinon, j'ai pas trouvé plus simple que la réponse de Jeje.
Julien Royer a écrit :
Et surtout loin d'être portable étant donné que "map" n'est pas spécifié dans ECMAScript 3.
if (!Array.prototype.map)
{
Array.prototype.map = function(fun /*, thisp*/)
{
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var res = new Array(len);
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this)
res[i] = fun.call(thisp, this[i], i, this);
}
return res;
};
}
Et comme l'énoncé n'indique pas quelle version de js on a le droit d'utiliser
Je vois pas d'autre solution que d'utiliser sort ou map, un indice ? [/i][/i]
Aller, je participe, mais plutôt pour la solution la plus moche. J'ai pas trouvé plus tarabiscoté :
Marche pas sous IE
var sentence = "Javascript is the most used scripts language in the internet";
var biggestWord = (sentence.indexOf(' ') + '-' +
sentence.replace(' ', function(str, offset, s) {
return ' ' + (
(sentence.indexOf(' ', offset + 1) == -1 ? s.length : sentence.indexOf(' ', offset + 1)) - offset - 1) + '-';
}, 'g')).split(' ').sort(function() {
return parseInt(arguments[1]) - parseInt(arguments[0]);
}).shift().split('-').pop();
alert(biggestWord);
Marche pas sous IE
Lanza a écrit :
Bonjour,
Si je puis me permettre, ça n'est pas tout à fait ça. Un(e ?) closure, c'est une fonction qui est déclarée dans un contexte (par exemple une autre fonction) où des variables le sont également et qui fait appel à ces variables. Mais pas à des variables globales qui, par définition, sont accessibles partout.
Les closures sur wikipédia (en anglais, c'est plus complet).
Sinon, j'ai pas trouvé plus simple que la réponse de Jeje.
C'est pour ça que je précisais que c'est le principe de base, dans l'absolu, une variable qui existe dans le contexte global n'est pas bindée à une quelconque scope, du coup, elle ne peut pas faire partie d'une closure.
cf : http://www.jibbering.com/faq/faq_notes/closures.html
Julien Royer a écrit :
Et surtout loin d'être portable étant donné que "map" n'est pas spécifié dans ECMAScript 3.
Comme dis dans l'énoncé, on peut utiliser n'importe qu'elle version de javascript.
Modifié par Shinuza (23 Oct 2007 - 15:50)
Bonjour
plutot bricoleur que programmeur et avec des connaissance bien maigre , j'ai une solution a partir d'un tableau qui semble fonctionné.
J'espere ne pas etre a coté de la plaque.
GC
Modifié par gcyrillus (23 Oct 2007 - 16:53)
plutot bricoleur que programmeur et avec des connaissance bien maigre , j'ai une solution a partir d'un tableau qui semble fonctionné.
<script type="text/javascript" >
var sentence = "er Javascript is the most used jjjjjjjjjjj script language in the internet";
//var biggestWord = ?;
var temp = new Array();
temp = sentence.split(' ');
//on initialise la variable
var biggestWord = temp[0];
//on parcours le tableau
var Tableau = temp;
for (var mot = 0; mot < Tableau.length;mot++)
{
// si plus grand on remplace
if ( temp[mot].length > biggestWord.length)
{biggestWord=temp[ mot];}
}
document.write(biggestWord);
</script>
J'espere ne pas etre a coté de la plaque.
GC
Modifié par gcyrillus (23 Oct 2007 - 16:53)