使用 lodash 在集合中进行通配符搜索
Posted
技术标签:
【中文标题】使用 lodash 在集合中进行通配符搜索【英文标题】:Wildcard Search in a collection with lodash 【发布时间】:2017-05-13 02:46:40 【问题描述】:我有一个如下所示的数组,我想进行通配符搜索并检索相应的值。这不会给我任何结果,如果有更好的方法可以帮助我。我在我的 nodejs 应用程序中使用 lodash 实用程序。
var allmCar = [
"_id": ObjectId("5833527e25bf78ac0f4ca30e"),
"type": "mCar",
"value": "ABDC",
"__v": 0
,
"_id": ObjectId("5833527e25bf78ac0f4ca30e"),
"type": "mCar",
"value": "XYZ ABD",
"__v": 0
,
"_id": ObjectId("5833527e25bf78ac0f4ca30e"),
"type": "mCar",
"value": "FGHJ",
"__v": 0
]
_.find(allmCar,
value:
$regex: 'XYZ'
)
我最终使用 _.includes 如下
_.each(allmCar,function(car)
if(_.includes('XYZ', car.value)===true)
return car;
)
【问题讨论】:
我认为allmCar
是一个数组,而不是一个对象。
@thefourtheye,是的,你是对的,它是一个数组。
您是否正在寻找类似于我在回答中显示的内容?因为默认情况下,正则表达式不能与 _.find
一起使用
您需要指定在此上下文中“更好”的含义。此外,这个问题可能适用于Code Review,只要 (a) 您的代码按预期工作,(b) 您的代码是真实代码,而不是示例代码,并且 (c) 您的代码包含在这个问题。如果您希望通过同行评审来改进代码的各个方面,请将其发布在 Code Review 上。
【参考方案1】:
你可以对传递给_.find
的函数做同样的事情,像这样
_.find(allmCar, function(mCar)
return /XYZ/.test(mCar.value);
);
或者用箭头函数,
_.find(allmCar, (mCar) => /XYZ/.test(mCar.value));
这会将传递给集合的所有项目的函数应用,如果一个项目返回true
,则该项目将被返回。
【讨论】:
感谢您的回复。这适用于通配符搜索吗?我仍然没有看到它返回任何价值。这个 .test 是做什么的,请你解释一下。 @AjaySrikanthRegExp#test
检查传递的字符串是否与正则表达式匹配。以上是关于使用 lodash 在集合中进行通配符搜索的主要内容,如果未能解决你的问题,请参考以下文章
在雄辩的 Where 子句中使用类似通配符的语法在两个字符串之间进行搜索
使用 C# 对 StackExchange.Redis 哈希中的字段进行通配符搜索