Nota: apenas traduzi o texto abaixo e postei aqui.
Apenas por diversão, comecei a examinar métodos em lodash e a criar equivalentes vanilla JS.
Hoje, vamos recriar o método lodash _.pull()
com vanilla JS.
O que esse método faz
O método _.pull()
pega um array e remove quaisquer valores que match ao que você passa.
var array = ['a', 'b', 'c', 'a', 'b', 'c'];
_.pull(array, 'a', 'c');
// Loga ['b', 'b']
console.log(array);
Um método pull() vanilla JS
Para este, usaremos o método Array.filter()
.
Primeiro, vamos criar um método helper pull()
. Ao contrário da versão lodash, passaremos um array para valores.
var pull = function (array, values) {
// Faça coisas...
};
A seguir, chamaremos o método Array.filter()
no array que foi passado.
var pull = function (arr, values) {
return arr.filter(function (item) {
// Faça coisas...
});
};
Por fim, verificaremos se o item atual está no array de valores a serem removidos usando o método Array.indexOf()
.
Se o método for maior que 0, retornaremos um valor false. Caso contrário, retornaremos um valor true.
var pull = function (arr, values) {
return arr.filter(function (item) {
return values.indexOf(item) < 0;
});
};
// versão sem o uso de filter
var pullNoFilter = function (arr) {
var output = arr.concat([]);
for (var i = 1; i < arguments.length;i++) {
var item = arguments[i];
do {
var index = output.indexOf(item);
index > -1 && output.splice(index, 1);
} while (index > -1);
}
return output;
};
Ao contrário da versão lodash, isso retorna um novo immutable array, então precisaremos atribuí-lo a uma variável.
Agora podemos fazer isso.
var array = ['a', 'b', 'c', 'a', 'b', 'c'];
var pulled = pull(array, ['a', 'c']);
// Loga ['b', 'b']
console.log(pulled);
Fonte
Newsletter de Go Make Things
Top comments (0)