使用lodash过滤多个值?

时间:2018-01-31 19:49:08

标签: javascript lodash

我可以过滤:

let users = [{'name': 'john', 'age': '20'},{'name': 'jeff', 'age': '2'}

_.filter(users, { 'name': 'john', 'age': '20');

以上将获得用户john,但是如何为每个数组指定多个选项?

例如,我想让20岁的人称为john和jeff,如:

_.filter(users, { 'name': 'john' | 'jeff', 'age': '20');

我怎么能用lodash做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以使用函数作为第二个参数:

@Component({
  selector: 'custom-comp',
  templateUrl: '<div class='child1'></div><div class='child2'></div>',
  styleUrls: ['./custom-comp.component.scss']
})
@Component({
      selector: 'comp',
      templateUrl: '<#custom-comp custom-comp></custom-comp>',
      styleUrls: ['./custom-comp.component.scss']
    })

@ViewChild('custom-comp') custom-comp: ElementRef;
ngOnInit(){
    console.log(this.custom-comp.nativeElement.children);
}

答案 1 :(得分:1)

var arr = ['barney','fred']
_.filter(users, (user) => {
  // You can put the required conditions here.
  return arr.indexOf(user.user) >=0 && user.age > '20';

});

这是一种可以指定任何条件的方法。由于您有必需的名称数组,因此您可以为多个名称执行此操作,并且您可以对年龄进行相同的操作。

答案 2 :(得分:0)

另一个灵活的解决方案,只需添加条件:

const res = _.filter(users, ({ name, age }) => _.every([
    _.includes(['john', 'jeff'], name),
    _.includes(['20'], age)
]));