Enumerable
Array
Les méthodes illustrées sont mises en exergue.
['salut', 'les', 'grenouilles' ].each(function(s) { alert(s); }); var sum = 0; $R(1, 20).each(function(n) { sum += n; }); alert('Somme des entiers de 1 à 20 : ' + sum);
var data = [ 42, 3.14, 0, Number.POSITIVE_INFINITY ]; if (data.all(function(x) { return 'number' == typeof x; })) alert('Tous les éléments de data sont bien des nombres.'); var data = [ document.head, document.wooza, document.body.foobar, document.body ]; // Seul document.body existe... if (data.any()) alert('Au moins un élément de data n\'est ni null ni undefined.'); alert($R(1, 20).include(12) ? '12 inclus entre 1 et 20' : '12 hors de l\'intervalle'); alert($A(document.childNodes).include(document.body) ? 'document.body figure dans les fils directs de document.' : 'document.body ne figure pas dans les fils directs de document.');
var desNombres = [ 1, 7, 18, 4, 3, NaN, 21, 12, NaN, 5 ]; var n = desNombres.find(function(n) { return n > 10; }); alert('Premier nombre supérieur à 10 : ' + n); var desTextes = [ "youpi", "'HTH", "c'est trop la fête", "un deux trois", "trop court", "hhgttg" ]; var result = desTextes.select(function(s) { return s.length > 10; }) alert('Textes de plus de 10 lettres :\n' + result.join('\n')); result = desNombres.reject(function(n) { return isNaN(n); }); alert('Nombres purgés des NaN : ' + result.join(', ')); result = desTextes.grep(/^[^aeiouy]*$/i); alert('Textes sans aucune voyelle : ' + result.join(', ')); result = desTextes.grep(/(\w+(\b|\W+)){3,}/, function(s) { return s.length; }); alert('Longueurs des textes contenant au moins trois mots : ' + result.join(', ')); result = desTextes.min(); alert('Plus petit texte dans l\'ordre lexicographique : ' + result); result = desTextes.max(function(s) { return s.length; }); alert('Plus grande taille de texte : ' + result); result = desTextes.max(function(s) { return (s.match(/[aeiouy]/ig) || []).length; }); alert('Plus grand nombre de voyelles : ' + result); result = desTextes.pluck('length'); alert('Longueurs des textes : ' + result.join(', '));
var desNombres = [ 1, 7, 18, 4, 3, 21, 12, 5 ]; var desTextes = [ "youpi", "'HTH", "c'est trop la fête", "un deux trois", "trop court", "hhgttg" ]; var result = desNombres.map(function(n) { return 0 == n % 2; }); alert('Parité des nombres : ' + result.join(', ')); result = desNombres.inject(0, function(acc, n) { return acc + n; }) alert('Somme interne des nombres : ' + result); result = desNombres.inject(1, function(acc, n) { return acc * n; }) alert('Produit interne des nombres : ' + result); result = desTextes.invoke('substring', 0, 10); alert('10 premières lettres des mots :\n' + result.join('\n')); result = desTextes.partition(function(s) { return s.length > 10; }); alert('Textes de\n' + '\t-plus de 10 lettres : \t' + result[0].inspect() + '\n' + '\t-moins de 10 lettres : \t' + result[1].inspect()); result = desTextes.sortBy(function(s) { return s.length; }); alert('Textes triés par taille :\n' + result.join('\n')); var logins = [ 'tdd', 'al', 'nioute', 'doudou' ]; var passwords = [ 'blah', 'koolik', 'linux', 'lachef', 'toto' ]; var auth = logins.zip(passwords); alert('Identifiants et mots de passe en tableaux imbriqués :\n' + Object.inspect(auth)); auth = logins.zip(passwords, function(args) { return { login: args[0], password: args[1] }; }); alert('Identifiants et mots de passe en objets :\n' + Object.inspect(auth.map($H))); var salts = [ 'abc', 'def', 'ghi' ]; // Il en manque un : ce sera undefined. auth = logins.zip(passwords, salts, function(args) { return { login: args[0], password: args[1], salt: args[2] }; }); alert('Identifiants, mots de passe et salts en objets :\n' + Object.inspect(auth.map($H)));