Underscore.js: a Biblioteca JavaScript que Você Precisa Conhecer
Hoje estou aqui para compartilhar uma biblioteca JavaScript que conheci a pouco tempo e que você também precisa saber de sua existência!
Acredito que os programadores Ruby estão acostumados com métodos simples como: each, map, min, max etc.. Agora você pode ter eles em JavaScript, com a biblioteca Underscore.js.
Escolhi alguns métodos para apresentá-los, vejamos abaixo..
Each
Itera sobre uma lista de elementos, podendo acessar o valor e índice.
_.each([10, 20, 30, 40], function(v, i){
  // listando [valor, índice]
  console.log([v, i]);
});
=> [10, 0]
=> [20, 1]
=> [30, 2]
=> [40, 3]Map
Produz um novo array mapeando cada valor através da função.
_.map([2, 4, 6],function(v){
  // multiplica por 2
  return v * 2;
});
=> [4, 8, 12]Filter
Percorre cada elemento, retornando um array de valores que passam na condição.
_.filter(['João', 'Pedro', 'Paulo'], function(v){
  // apenas que começam com a letra "P"
  return v.charAt(0) == 'P';
});
=> ["Pedro", "Paulo"]Contains
Retorna true se o valor está presente na lista.
_.contains(['ruby', 'python', 'php'], 'javascript');
=> falseMax
Retorna o valor máximo da lista.
_.max([23, 45, 65, 34, 1, 35])
=> 65Shuffle
Retorna uma cópia misturada da lista.
_.shuffle([1, 2, 3, 4, 5]);
=> [5, 2, 1, 4, 3]Last
Retorna o último elemento do array.
_.last([{name: 'André', age: 21}, {name: 'Marta', age: 37}]);
=> Object { name="Marta", age=37}Flatten
"Achata" um array.
_.flatten([[1, 2], [[[4, 5]]], [[[[6], 7]]]])
=> [1, 2, 4, 5, 6, 7]Range
Cria um faixa de valores.
// Começa em 100, vai até 200, de 10 em 10
_.range(100, 210, 10);
=> [100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200]Has
Retorna true se o objeto contém uma dada chave.
_.has({a: 1, b: 2, c: 3}, 'd');
=> falseTimes
Invoca uma função iteradora dado o número de vezes.
_(4).times(function(n){
  console.log("número " + n)
});
=> número 0
=> número 1
=> número 2
=> número 3Essa são apenas algumas funções, entre no site e confira todas.
Abraços.