Фильтрация массива объектов с помощью lodash на основе значения свойства
У нас есть массив объектов как таковых
var myArr = [ {name: "john", age:23}
{name: "john", age:43}
{name: "jim", age:101}
{name: "bob", age:67} ];
как мне получить список объектов из myArr, где имя john с lodash?
Ответы
Ответ 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)