Enumerable (ici au travers de Array)

Les méthodes illustrées sont mises en exergue.

L'itération proprement dite

['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);

Tests sur le contenu

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.');

Extractions

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(', '));

Transformations et calculs

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)));