【发布时间】:2017-12-28 16:20:24
【问题描述】:
是否可以使用正则表达式 lodash 在对象数组中查找? 例如:
a=val+"@"
b="@"+val
_.find(obj.dbColumns,{attr:{data-db-name: ***CONTAINS a || CONTAINS b*** }})
提前致谢。
【问题讨论】:
标签: arrays regex object find lodash
是否可以使用正则表达式 lodash 在对象数组中查找? 例如:
a=val+"@"
b="@"+val
_.find(obj.dbColumns,{attr:{data-db-name: ***CONTAINS a || CONTAINS b*** }})
提前致谢。
【问题讨论】:
标签: arrays regex object find lodash
您可以传递一个测试每个元素的函数。 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;
});
【讨论】: