2017-02-07 11 views
0

так ив получил этот массивИспользование lodash и нужно найти имена в массиве, которые имеют возраст меньше, чем X

var gillFamily = [{name: 'john', age: 20}, 
        {name: 'richard', age: 27}, 
        {name: 'debbie', age: 55}, 
        {name: 'dan', age 25}, 
        {name: 'robin', age 60}] 

и используя lodash нужно найти всех людей с возрастом менее 50. I попробовал этот _.map, чтобы увидеть, если он будет работать

_.map(gillFamily, (el) => el.name, (el) => el.age < 50); 

и некоторый фильтр и уменьшить материал с funtctions, но не могу получить его, спасибо

+0

'Array.prototype.filter()' будет достаточно – RomanPerekhrest

ответ

0

Вам нужно сделать использование filter функция. Функция фильтра выполняет итерацию по элементам коллекции, возвращая массив всех элементов, где выполняется условие. Дополнительная информация here.

map Используется для преобразования массива из одной формы в другую, которая не соответствует вашим требованиям.

var gillFamily = [{name: 'john', age: 20}, 
 
         {name: 'richard', age: 27}, 
 
         {name: 'debbie', age: 55}, 
 
         {name: 'dan', age: 25}, 
 
         {name: 'robin', age: 60}]; 
 

 

 

 
var ageLessThan50 = _.filter(gillFamily, person => person.age < 50); 
 
console.log(ageLessThan50);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

1

_.map() преобразует массив. Он не удаляет элементы. Например, если ваш входной массив

const family = [ 
    {name: 'john', age: 20}, 
    {name: 'richard', age: 27}, 
    {name: 'debbie', age: 55}, 
    {name: 'dan', age: 25}, 
    {name: 'robin', age: 60} 
] 

вы можете использовать его, чтобы преобразовать его в массив, содержащий описания лиц:

_.map(family, p => p.name + " is " + p.age + " years old") 

Вы будете в конечном итоге с:

[ 
    'john is 20 years old', 
    'richard is 27 years old', 
    'debbie is 55 years old', 
    'dan is 25 years old', 
    'robin is 60 years old' 
] 

Чтобы получить массив, содержащий лиц моложе 50 лет, одним из способов было бы использовать _.filter():

_.filter(family, p => p.age < 50) 

Однако это не единственный способ сделать это. Существует несколько других способов достижения этой же цели с помощью lodash, и ES6 также предоставляет map() и filter()natively.