web-dev-qa-db-ja.com

Lodash:オブジェクトの配列をフィルターし、nullでないか確認します

Lodashを使い始めたばかりで、このオブジェクトの配列があります。プロパティの1つは整数かnullです。 nullのアイテムの配列をフィルター処理する方法は知っていますが、nullでないかどうかを確認するにはどうすればよいですか?

次のようなものがあるとしましょう:

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

そして、私は次のようなものが欲しいです:

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

繰り返しますが、私はlodashが初めてなので、これを達成するためのより良い方法があるかもしれません。

前もって感謝します。

12
kenshin9

これは _.reject および _.filter

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

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

DEMO

31
GG.

デフォルトユーザーではなくデフォルトユーザーをチェックするいくつかの述語関数を作成できます。

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

var isNotdefaultUser = _.negate(isDefaultUser);

その後、フィルタリングなどに使用できます。

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

次のようなもので試してください:

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

返される配列には、コールバック関数がtrueを返す要素のみが含まれます。

または、 ファインマニュアルに入れて、コレクションの要素を反復処理し、すべての要素の配列を返すと、真偽を返します。述部は、3つの引数で呼び出されます:(値、インデックス|キー、コレクション)。

0

これらのライブラリは時間の浪費に過ぎない場合があると思います。ライブラリに依存する特定の要約を学習する代わりに、矢印とともにES6配列関数を十分に把握することが最善です。それでは、どうぞ。

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