11484 sujets

JavaScript, DOM et API Web HTML5

Pages :
(reprise du message précédent)

Shinuza > Ou comment mettre du map à toutes les sauces... tu as gagné le 1
Shinuza
# 02 Nov 2007 - *Edit: 07:00:45
QuentinC
# 02 Nov 2007 - *Edit: 07:26:35

holééééééé Smiley lol
Modifié par Ze Nenex (02 Nov 2007 - 11:00)
Lève tôt. Il faut bien se lever pour aller en cours non ?
Je n'avais pas congé ni le 1 ni le 2, moi... bande de faignasses.

Et puis si vous me voyez poster entre 8 et 18h, c'est probablement que je surfe pendant les cours... ça m'arrive parfois. En l'occurence jamais le vendredÿ... parce que là je suis chez moi.
En application réelle, j'ai fais ça :

var query = window.location.search.substring(1).split("&").map(function(sp) {return sp.split('=')});
this.params = $dict(query);


Avec le helper (inspiré de python) :

function $dict(A) {
    var d = {}
	A.each(function(item) {
		var key = item[0];
		var value = item[1];
        d[key] = value;
	});
    return d;
}
Pour le 2 (mise en minuscules des noms de balise, avec regex), je propose ceci :
var res = document.documentElement.innerHTML.replace(/<([^>])+>/g, function(_in){ return _in.toLowerCase();});

Modifié par Herode (06 Nov 2007 - 11:35)
Et sans regex (si j'ai bien suivi ?) :

var txt = document.documentElement.innerHTML;
for( var i = beg = 0; i < txt.length; ++ i ) 
	if( txt.charAt(i) == '<' ) 
		beg = i + 1; 
	else if( txt.charAt(i) == '>' )  
		txt = txt.replace(txt.substr(beg, i - beg), function(_in){return _in.toLowerCase(_in);});
Herode a écrit :
Pour le 2 (mise en minuscules des noms de balise, avec regex), je propose ceci :
var res = document.documentElement.innerHTML.replace(/<([^>])+>/g, function(_in){ return _in.toLowerCase();});


Edit --> Oups, c'était déjà trouvé. Bon, je retourne me coucher Smiley rolleyes
Modifié par Herode (06 Nov 2007 - 11:57)
Herode  > Non seulement c'était déjà trouvé, mais en plus ta version est fausse : elle met en minuscules tout ce qu'il y a entre < et >, si j'ai bien suivi. Donc aussi les éventuels arguments.
Ce serait peut-être pas mal de mettre ce qui est intéressant dans le topic des scripts utiles ?
Libre à toi de proposer, personellement j'ai pas le temps de composer, trop de boulot, vive Q4! Smiley sweatdrop
a écrit :

À part ça si j'ai bien suivi il n'y a plus rien à trouvé ...

Effectivement... Mais si tu as une bonne idée de petit défi, ne te gêne pas de proposer. Moi non plus je n'ai pas trop le temps.
Modifié par QuentinC (03 Dec 2007 - 07:29)
Allez, j'ai rencontré ce petit truc y'a pas longtemps, assez fun :

a écrit :
Soit deux Array();

var d = ['John','Marie','Eric','Charly'];
var e = ['Smith','Simpson','Tabarly']

Ecrire une expression qui respecte l'équation suivante :

-> fn(p, q, ...) -> [[p0, q0, ...], [p1, q1, ...], ...];

Modifié par Shinuza (03 Dec 2007 - 18:47)
J'ai compris çà mais je me demande si il y a pas plus simple :

function f() {
	var args = Array.prototype.slice.call(arguments);
	var len = Math.max.apply(Math, args.map(function(a){return a.length;}));
	var res = [ len];
	for(var k=0;k<len;k++) {
		res[k] = [];
		for (var j=0;j<args.length;j++) {			
			res[k].push(args[j][k]);
		}
	}
	return res;
}


Nota : Comme les 2 tableaux n'ont pas la même taille, je retourne un tableau de taille égale au plus grand des tableaux passés en parametre.
Modifié par dunjl (04 Dec 2007 - 12:34)
Heyoan a écrit :
idem Smiley murf !

QuentinC a écrit :
Heu... désolé mais j'ai rien capté !


Pour
fun([1,2,3,4,5,6],['a','b','c','d','e','f','g'])


La fonction doit retourner
[[1, "a"], [2, "b"], [3, "c"], [4, "d"], [5, "e"], [6, "f"]]


dunjl a écrit :
J'ai compris çà mais je me demande si il y a pas plus simple :

function f() {
	var args = Array.prototype.slice.call(arguments);
	var len = Math.max.apply(Math, args.map(function(a){return a.length;}));
	var res = [ len];
	for(var k=0;k<len;k++) {
		res[k] = [];
		for (var j=0;j<args.length;j++) {			
			res[k].push(args[j][k]);
		}
	}
	return res;
}


Nota : Comme les 2 tableaux n'ont pas la même taille, je retourne un tableau de taille égale au plus grand des tableaux passés en parametre.


Cf plus haut pour les valeurs de retour, sinon c'est pas mal.
ok alors selon tes valeurs de retour, j'ai juste changé le max en min ...
function f() {
	var args = Array.prototype.slice.call(arguments);
	var len = Math.min.apply(Math, args.map(function(a){return a.length;}));
	var res = [ len];
	for(var k=0;k<len;k++) {
		res[k] = [];
		for (var j=0;j<args.length;j++) {			
			res[k].push(args[j][k]);
		}
	}
	return res;
}

Modifié par dunjl (04 Dec 2007 - 14:35)
Pages :