web-dev-qa-db-ja.com

プロパティ値に基づいたlodashを使用したオブジェクトの配列のフィルタリング

そのようなオブジェクトの配列があります

var myArr = [ {name: "john", age:23}
              {name: "john", age:43}
              {name: "jim", age:101}
              {name: "bob", age:67} ];

名前がjohnでlodashのmyArrからオブジェクトのリストを取得するにはどうすればよいですか?

49
sarsnake

Lodashには、jQueryのように機能する「マップ」関数があります。

var myArr =  [{ name: "john", age:23 },
              { name: "john", age:43 },
              { name: "jimi", age:10 },
              { name: "bobi", age:67 }];

var johns = _.map(myArr, function(o) {
    if (o.name == "john") return o;
});

// Remove undefines from the array
johns = _.without(johns, undefined)
20
Dustin Poissant

Lodash _.filterメソッドを使用します。

_.filter(collection, [predicate=_.identity])

コレクションの要素を反復処理し、すべての要素の配列を返します。述語は真理を返します。述部は、3つの引数(値、インデックス|キー、コレクション)で呼び出されます。

カスタム関数としての述語付き

 _.filter(myArr, function(o) { 
    return o.name == 'john'; 
 });

フィルタリングされたオブジェクトの一部としての述語を使用_.matches反復の短縮形)

_.filter(myArr, {name: 'john'});

[key、value]配列としての述語付き_.matchesProperty反復の短縮形。)

_.filter(myArr, ['name', 'John']);
104
let myArr = [
    {name: "john", age:23},
    {name: "john", age:43},
    {name: "jim", age:101},
    {name: "bob", age:67},
];

// this will return old object (myArr) with items named 'john'
let list = _.filter(myArr, item => item.name === 'jhon');

//  this will return new object referenc (new Object) with items named 'john' 
let list = _.map(myArr, item => item.name === 'jhon').filter(item => item.name);
3
Nver Abgaryan
let myArr = [
    {name: "john", age:23},
    {name: "john", age:43},
    {name: "jim", age:101},
    {name: "bob", age:67},
];

let list = _.filter(myArr, item => item.name === "john"); </ code>
3
Nver Abgaryan

**名前、年齢でフィルタリング**、また、マップ機能を使用できます

マップとフィルターの違い

1。map-map()メソッドは、配列要素ごとに関数を呼び出した結果で新しい配列を作成します。 mapメソッドを使用すると、配列内のアイテムをユーザーの好みに合わせて操作し、選択した操作の結論をまったく新しい配列で返すことができます。たとえば、次の配列を考えます。

2。filter-filter()メソッドは、提供された関数によって実装されたテストに合格するすべての配列要素で満たされた配列を作成します。フィルターメソッドは、ユーザーが共通の特性を共有する配列内の特定のアイテムを識別する必要がある特定のインスタンスに適しています。たとえば、次の配列を考えます。

`const users = [ 
           {name: "john", age:23},
           {name: "john", age:43},
           {name: "jim", age:101},
           {name: "bob", age:67} 
     ];

    const user = _.filter(users, {name : 'jim', age: 101});
    console.log(user);`
2
Nver Abgaryan

lodash の場合:

const myArr = [ {name: "john", age:23},
                {name: "john", age:43},
                {name: "jim", age:101},
                {name: "bob", age:67} ];

const johnArr = _.filter(myArr, person => person.name === 'john');
console.log(johnArr)

enter image description here

バニラJavaScript:

const myArr = [ {name: "john", age:23},
                {name: "john", age:43},
                {name: "jim", age:101},
                {name: "bob", age:67} ];

const johnArr = myArr.filter(person => person.name === 'john');
console.log(johnArr);

enter image description here

1
Yuci

lodashにはremoveメソッドもあります

 var myArr = [ {name: "john", age:23}
          {name: "john", age:43}
          {name: "jim", age:101}
          {name: "bob", age:67} ];

 var onlyJohn = myArr.remove( person => { return person.name == "john" })
0
Nicole Wheeler