what que node example biblioteca javascript underscore.js lodash

javascript - que - Omitir y devolver objetos de la lista de objetos usando Lodash/Subrayado



que es lodash (6)

El subrayado first y el rest deben hacer el truco:

var a = _.first( _.rest(items, 2), 3);

y descanse solo se puede usar para omitir el primer registro:

$scope.allButTheFirst = _.rest( $scope.myObject, 1)

El encadenamiento se puede utilizar para hacer que la declaración sea un poco más agradable a la vista y, por lo tanto, mejorar la transparencia:

var a = _.chain(items) .rest(2) .first(3) .value();

Como se señaló en la respuesta de @ RhysvanderWaerden, al usar lodash, use drop lugar de first y take lugar de rest .

Necesito realizar una operación similar a la siguiente escrita en C #:

int[] items = { 1, 2, 3, 4, 5, 6, 7 }; var a = items.Skip(2).Take(3);

Los cuales devuelven 3, 4 y 5.

Del mismo modo, necesito omitir registros de una lista de objetos

$scope.myObject = [ { Editable: true, Name: "Daniel Test", Site: "SE100"}, { Editable: true, Name: "Test new", Site: "SE100"}, { Editable: false, Name: "Test", Site: "SE100"} ]

Tengo que saltarme el primer registro y recuperar los registros restantes, es decir, el 1 ° registro

¿Cómo puedo hacer esto usando lodash / subrayado?


En lodash v3 puedes usar los métodos slice y take . Como alternativa, puedes usar el método de matriz.

var offset = 2; var limit = 3; var items = [1, 2, 3, 4, 5, 6, 7]; var result1 = _(items).slice(offset).take(limit).value(); var result2 = items.slice(offset, offset + limit); document.getElementById(''result1'').innerText = result1.toString(); document.getElementById(''result2'').innerText = result2.toString();

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.7.0/lodash.min.js"></script> <pre> lodash v3: <span id="result1"></span> vanila JS: <span id="result2"></span> </pre>


En Lodash, las funciones first y de rest comportan de manera diferente al subrayado. Es decir, no aceptan un argumento de longitud. En su lugar, debe usarse drop and take :

const a = _.take(_.drop(items, skipCount), takeCount); // or const a = _(items).drop(skipCount).take(takeCount).value();


Puedes usar _.chunk(array,count) .

Solo pase el recuento, obtendrá toda la matriz dividida en el tamaño del conteo, luego pase el valor y se moverá. + 1


Teniendo esto

const skip = 0; const take = 40;

Simplemente puedes hacer esto

return _.slice(items, skip, skip + take);

O simplemente usando js nativos

items.slice(skip, skip + take);


/* PAGINATION WITH SORTING AND PAGING */ const page = 1; // input page, min value 1 const limit = 2; // input limit min value 1 /* INPUT ARRAY */ const array = [ { Editable: true, Name: "Daniel Test", Site: "SE100"}, { Editable: true, Name: "Test new", Site: "SE100"}, { Editable: false, Name: "Test", Site: "SE100"}, ]; /* PAGINATION WITH SORTING AND PAGING */ const result = _(array) .orderBy([''Name''], [''asc'']) // sort by ascendind .drop((page - 1) * limit) // page in drop function starts from 0 .take(limit) // limit 2 .value(); console.log(result); console.log(JSON.stringify(result)); /* RESULT: limit 2 sort by ascendind [ { "Editable":true, "Name":"Daniel Test", // name sorted by ascendind "Site":"SE100" }, { "Editable":false, "Name":"Test", "Site":"SE100" } ] */

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script>