代码之家  ›  专栏  ›  技术社区  ›  Leonel Matias Domingos

按regExp匹配查找Lodash

  •  1
  • Leonel Matias Domingos  · 技术社区  · 7 年前

    是否可以使用lodash在对象数组中查找regexp? 前任:

    a=val+"@"
    b="@"+val
    _.find(obj.dbColumns,{attr:{data-db-name: ***CONTAINS a || CONTAINS b*** }})
    

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  3
  •   ysth    7 年前

    您可以传递一个测试每个元素的函数。这个 documentation 给出以下示例:

    var users = [
      { 'user': 'barney',  'age': 36, 'active': true },
      { 'user': 'fred',    'age': 40, 'active': false },
      { 'user': 'pebbles', 'age': 1,  'active': true }
    ];
    
    _.find(users, function(o) { return o.age < 40; });
    

    因此,您可能正在寻找这样的东西:

    _.find(obj.dbColumns, function(o) {
        return (new RegExp ([a,b].join('|'))).test( o.yourAttribute );
    });
    

    或者,如果只需要子字符串搜索,而不是正则表达式:

    _.find(obj.dbColumns, function(o) {
        return
            o.yourAttribute.indexOf(a) >= 0 ||
            o.yourAttribute.indexOf(b) >= 0;
    });