Подтвердить что ты не робот

Фильтрация массива объектов с помощью lodash на основе значения свойства

У нас есть массив объектов как таковых

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

как мне получить список объектов из myArr, где имя john с lodash?

4b9b3361

Ответ 1

Lodash имеет функцию "map", которая работает точно так же, как jQuerys:

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)

Ответ 2

Использовать метод lodash _.filter:

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

Перебирает элементы коллекции, возвращая массив всех предикатов элементов, возвращает truey for. Предикат вызывается с тремя аргументами: (значение, индекс | ключ, коллекция).

с предикатом как пользовательская функция

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

с предикатом как часть отфильтрованного объекта (сокращенно _.matches iteratee)

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

с предикатом как массив [ключ, значение] (сокращенное _.matchesProperty iteratee.)

_.filter(myArr, ['name', 'John']);

Ответ 3

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");

Ответ 4

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);

Ответ 5

С Лодаш:

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

Ответ 6

** Фильтр по имени, возрасту ** также вы можете использовать функцию карты

разница между картой и фильтром

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);'

Ответ 7

У lodash также есть метод удаления

 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" })

Ответ 8

Пытаться:

_.intersectionWith(obj1, obj2, comparatorFunc)