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>