使用lodash并需要在数组中查找年龄小于X的名称

时间:2017-02-07 19:12:34

标签: javascript lodash

所以我得到了这个数组

const newItem = { id: 77, name: 'Test 77', obj: { name: 'Sub Name 77' } };
//instead of this.model.items[0] = newItem; use below
this.model.items.splice(0, 1, newItem);

并且使用lodash需要找到年龄小于50岁的所有人。 我试过这个_.map看看它是否可行

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

并且有些过滤并减少了有问题的东西,但是无法得到它,谢谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您需要使用filter功能。 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>