web-dev-qa-db-fra.com

Lodash: Filtrez le tableau d'objets et vérifiez s'il n'est pas nul

Je viens de commencer à utiliser lodash et j'ai ce tableau d'objets, où l'une des propriétés a un entier ou est nulle. Je sais comment filtrer le tableau pour les éléments qui sont nuls, mais comment vérifier s'il n'est pas nul?

Disons que j'ai quelque chose comme ça:

var users = [
    { 'user': 'barney', 'default': 1 },
    { 'user': 'dino', 'default': 0 },
    { 'user': 'wilma', 'default': 1 },
    { 'user': 'fred',   'default': null }
];

Et puis je veux quelque chose comme:

var notNullDefault = _.filter(sourceData, ['is_default', ! null ]); // objects with names barney, dino, wilma
var nullDefault = _.filter(sourceData, ['is_default', null ]); // object with name fred

Encore une fois, je suis nouveau dans le lodash, alors peut-être y a-t-il une meilleure façon d'y parvenir aussi.

Merci d'avance.

12
kenshin9

Cela peut être résolu avec _.reject et _.filter :

var notNullDefault = _.reject(sourceData, ['default', null]);

var nullDefault = _.filter(sourceData, ['default', null]);

DEMO

31
GG.

Vous pouvez créer quelques fonctions de prédicat qui vérifient les utilisateurs par défaut et non les utilisateurs par défaut:

var isDefaultUser = function(user){
    return _.isNull(user.default);
}

var isNotdefaultUser = _.negate(isDefaultUser);

Ils pourraient ensuite être utilisés pour le filtrage, etc.

var defaultUser = _.filter(users, isDefaultUser);

var notDefaultUsers = _.filter(users, isNotdefaultUser);

// partition will be an array; first element contains the default users
// second element contains the non default users 
var parition = _.partition(users, isDefaultUser);
2
Gruff Bunny
let items = [1, 2, 4, null];

let isHaveNull = _.some(items, (item) => _.isNull(item));

console.log(isHaveNull);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
2
erdemildiz

Essayez avec quelque chose comme ça:

var notNullDefault = _.filter(users, function(elem) { return elem.default !== null; }); 
var nullDefault = _.filter(users, function(elem) { return o.default === null; }); // object with  name fred

Le tableau renvoyé contient uniquement les éléments pour lesquels la fonction de rappel renvoie true.

Ou, comme ils l'ont mis dans le manuel fin : Itère sur les éléments de la collection, renvoyant un tableau de tous les éléments, le prédicat retourne vrai pour. Le prédicat est invoqué avec trois arguments: (valeur, index | clé, collection).

0
Tudor Constantin

Je pense que ces bibliothèques sont parfois juste une perte de temps. Au lieu d'apprendre un résumé spécifique dépendant de la bibliothèque, il est préférable de maîtriser les fonctions du tableau ES6 avec les flèches. Alors voilà!

var users = [
             { 'user': 'barney', 'default': 1 },
             { 'user': 'dino',   'default': 0 },
             { 'user': 'wilma',  'default': 1 },
             { 'user': 'fred',   'default': null }
            ],
 userNull = [],
 userFull = [];
users.forEach(e => e.default == void 0 ? userNull.Push(e) : userFull.Push(e));

document.write("<pre> userNull:\n" + JSON.stringify(userNull, null, 2) + "</pre>");
document.write("<pre> userFull:\n" + JSON.stringify(userFull, null, 2) + "</pre>");
0
Redu