【问题标题】:Using lodash and need to find names in an array that have an age less than X使用 lodash 并需要在数组中查找年龄小于 X 的名称
【发布时间】:2017-02-07 19:12:33
【问题描述】:

所以我有这个数组

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

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

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

还有一些过滤和减少功能的东西,但不能得到它,谢谢。

【问题讨论】:

  • Array.prototype.filter() 就足够了

标签: javascript lodash


【解决方案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

【讨论】:

    【解决方案2】:

    您需要使用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);
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 2014-01-26
      • 2022-12-13
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多