Lodash通过regExp匹配找到

时间:2017-12-28 16:20:25

标签: arrays regex object find lodash

是否可以使用lodash,regexp找到对象数组? 例如:

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以传递测试每个元素的函数。 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;
});